Concordo com @marc_s e @KM que esse grande projeto está condenado desde o início.
Milhões de horas de desenvolvedor da Microsoft foram dedicadas à construção e ao ajuste fino de um mecanismo de banco de dados robusto e poderoso, mas você vai reinventá-lo colocando tudo em um pequeno número de tabelas genéricas e reimplementando tudo o que o SQL Server já é projetado para fazer por você.
O SQL Server já possui tabelas contendo nomes de entidades, nomes de colunas e assim por diante. O fato de você normalmente não interagir diretamente com essas tabelas de sistema é uma coisa boa:isso se chama abstração. E é improvável que você faça um trabalho melhor de implementação dessa abstração do que o SQL Server.
No final das contas, com sua abordagem (a) mesmo as consultas mais simples serão monstruosas; e (b) você nunca chegará perto do desempenho ideal, porque está abrindo mão de toda a otimização de consulta que, de outra forma, obteria gratuitamente.
Sem saber mais nada sobre sua aplicação ou seus requisitos, é difícil dar qualquer tipo de conselho específico. Mas eu sugeriria que uma boa e velha normalização ajudaria muito. Qualquer banco de dados não trivial bem implementado tem muitas tabelas; dez tabelas mais dez tabelas xtab não devem assustá-lo.
E não tenha medo da geração de código SQL como forma de implementar interfaces comuns em tabelas diferentes. Um pouco pode percorrer um longo caminho.