Se o mero fato de você ter várias associações está diminuindo suas consultas, então seu banco de dados precisa ser ajustado ou você precisa mover para um melhor RDBMS que possa lidar melhor com suas associações. Não vejo nada de errado com o seu esquema.
Supondo que seu banco de dados suporte isso, minha sugestão é examinar cuidadosamente os planos de consulta para suas consultas e procurar casos em que novos índices possam resolver seus problemas. Esse recurso é extremamente dependente de db.
Finalmente, algo faltando na discussão é informar as necessidades. Isso é algo que pode e freqüentemente exclui qualquer solução não relacional.