Eu especificamente quero evitar listar os nomes das colunas das tabelas porque a) requer manutenção frequente b) existem várias centenas de colunas por tabela.
Neste caso, você não pode evitá-lo. Você deve especifique os nomes das colunas e, para as colunas com nomes duplicados, use um alias. A geração de código pode ajudar com essas muitas colunas.
SELECT *
é uma prática ruim, independentemente - se alguém adicionar uma coluna binária de 2 GB a uma dessas tabelas e preenchê-la, você realmente deseja que ela seja retornada?