What's bad with shadowing? It's almost double as much work.
What I suggest is a /Shadow command, which will automatically shadow all blocks of one specific type.
This might be doable using /Shadow [BlockType] [ShadowBlockType].
What it basically does, is replacing all blocks of the text one block left/down diagonally of all blocks of [BlocksType] in the marked area with [ShadowBlockType], except [BlockType]!
This might be lots of info in few words, and look quite messy, therefor, I've brought an example:
BEFORE

AFTER

Thanks looking into it,
-BobKare