Mano Rodolfo.
Em primeiro lugar, parabéns por dar um passo rumo à "objetificação". :)
Me dá até calafrios quando alguém fala que tem centenas de variáveis públicas no software. :)
Sobre sua dúvida, na minha opinão a utilização da classe Empty neste caso não é adequado.
Por estar construindo os objetos "on-the-fly" (em tempo de execução), você não irá se beneficiar do IntelliSense enquanto estiver programando. Assim, terá que digitar tudo "no braço". A classe Empty seria uma boa opção caso você não soubesse as propriedades que desejaria no objeto até o momento da execução do programa.
Como, segundo seu exemplo, as propriedades já serão conhecidas enquanto você estiver programando, acho mais interessante criar estas classes previamente, então fazer uso das mesmas. Além de ganhar o benefício de fazer uso do Intellisense, você ainda ganha algumas outras beneficios, como:
1. Possibilidade de subclassificar estas classes caso você tenha a necessidade de extender a funcionalidade em função de novos requerimentos em novos projetos.
2. Possibilidade de definir métodos para estas classes (lembrando que não é possível definir métodos, ou mesmo subclassificar, a classe Empty).
Claudio Lassala