Obviously, I need to implement some sort of checking to see if a tile is covered by others. I need to know about all 3 face's coverage..How do I find that?
That's not obvious to me. Performance seems fine for now. And really, you don't want anything that tall in a typical map. If something really is that tall, you'll want to do a cutaway or a fade at the upper heights.
Are there any other ways I can improve this, other than sub-block movement?
Collision, gravity, more complex maps using procedural terrain generation.
You should decide if you want to make it so these maps can be rotated or not. If not, you will need to be even more careful with your terrain generation.
You'll also want to work on systems to show the character when behind things, by fading large objects (as mentioned a bit above).
When should I start on sub-block movement? Any recommendations as far as that goes?
Start smooth scrolling right away, it's easy. But sub-block movement isn't necessarily required.
You will want animations of characters moving between blocks, and smooth scrolling, but not necessarily positions that stop between blocks.
It should be pretty straightforward.
If you want the characters to have per pixel movement, that makes things a little more complicated.
What kind of game are you wanting to make? If it's strategic, clear block positions make a lot of sense. If it's more ARPG, then per pixel location could work.