Necesito que las categorías se ordenen visualmente como si fuese un rompecabezas, una especie de float:left pero donde se cubran los huecos que dejen categorías más pequeñas que otras (en la imagen de ejemplo se ve claramente a lo que refiero).
Bien, las categorías se ordenan alfabéticamente desde la base y llegan así al template, en el código aparece una debajo de la otra. Como cada categoría trae a su vez las sub-categorías que les corresponden -puede tener una o muchas-, los divs que se arman comienzan a tener distintas alturas. Si cada div -con todo lo que trae dentro- lo pongo float:left, las categorías se ordenan, pero comienzan a generarse huecos porque hay unos más altos que otros, y allí se genera el inconveniente.

Esto es lo que quiero lograr, sabiendo que no me sirve el float left, y que las categorías ya vienen ordenadas automáticamente desde la base.
Espero se entienda y alguien aporte soluciones.
Saludos.