Plop down the villager sprite first.
Now, let's say you have a sprite containing only the outline of the character in some bright color (say, RGB(0,0,255)). You can figure out which part of the villager sprite rectangle is occluded by the building... for the occluded rectangle, you Blt your special outline sprite down.
Then, when you blt the building, you dest colorkey with the outline color (0,0,255). Presto, the villager outline shows thru.
Not sure if this would be faster or slower than what you described, but at first glance it seems like it might work.
BTW: AoK - great game. Catch me on the Zone sometime ("Menin") and I'll play ya.
Mason McCuskey
Spin Studios
www.spin-studios.com