Okay, I just read a thingy about this sort of stuff here: http://forums.tigsource.com/index.php?topic=3452
They were having trouble with draw order for their isometric engine. The solution they came up with was something like this:
Set the draw order for each object to (Y increment*100)+(Z increment). Then draw each object according to it's draw order.
So if there's a block at Row 2, Z 1 then it's draw order would be 201. And if there were a block at Row 2, Z 2 then it's draw order would be 202, and since it's higher it gets drawn on top.
So if I'm understanding this right (and I might not be ), all you'd need at that point is:
-Set value('draworder') to (Y*100)+Z
+For each Family Z ordered by value('draworder') Ascending
-Bring to front
Just one little loop
This will apparently only work with single-unit blocks, so the large block you have will have to be chopped up into smaller blocks that are treated as individuals (but you could easily disguise that with clever tiling).