Anche se si tratta di mettere un div in più, si parla comunque di rendere il template decisamente più stabile ed esente da errori. Generalmente i float sono un po' infidi, in particolar modo in IE.

Ad ogni modo un'alternativa ci sarebbe, cioé togliere il div "sopra" lasciando i due float da soli e dare al div inferiore
codice:
#sotto{
   margin-top: 50%;
}
e il risultato dovrebbe essere ciò che chiedi (dico "dovrebbe" perché non l'ho ancora testato), non l'ho detto perché lo trovo meno pulito rispetto all'altro... beh poi sono gusti, certamente, ma comunque mi dà la sensazione di essere "aggiustato". Insomma, sono per i vincoli invalicabili tra i tag
Vedi tu.

hth
ciauz