Se si tratta di ottenere la maggiore "pulizia" possibile del codice, penso sarebbe piu' conveniente avere una singola classe per ogni interfaccia grafica, e magari far si' che queste classe discendano da un'unica classe padre con le caratteristiche comuni dell'interfaccia.

Inoltre, nel campo delle interfaccie grafiche va molto il pattern Model-View-Controller (usato, tra l'altro, anche dalle classi swing) : tenere ben separati i componenti che sono responsabili della grafica (view) dai componenti che sono responsabili della logica del programma (controller) e dai componenti che contengono i dati su cui opera il programma (model).

Per quanto riguarda le prestazioni puoi velocizzare la presentazione delle diverse interfacce (se non lo fai gia') precaricandole all'avvio dell'applicazione e tenendole nascoste (usando setVisible(false) o i comandi equivalenti) piuttosto che crearle quando servono.

Se la fase di avvio diventa troppo lunga puoi sempre usare uno splash screen.