Here's an idea for a method that avoids using Bo3 branching, and allows you a level of randomness (actually, complete randomness). Create a tiny biome called "village" or whatever that will match the surrounding terrain. Create a handful of village objects with high spawn rates and only generate them in your village biome. As a bonus you can have villagers spawn naturally in them (those this might lead to some severe overcrowding if its not in check somehow)
I just whipped this up in few minutes to illustrate my suggestion. There are a lot of issues- some fine details like roads will be difficult. There is also the possibility of clipping but I think this can be avoided or at least mitigated with blockchecks. You will also have some problems with buildings clipping into the ground/terrain and doors not being accessible, but this shouldn't be as much of a problem if there are very few trees and completely flat terrain. I left in bushes and used 0.1 volatility and you can see the issues that causes in some images.
That all being said, this might work for you. I rather like the output of this despite its faults; I don't mind if sometimes my objects don't generate correctly, it adds to the "charm" I suppose. It comes down to how much of a stickler for details you are. The villages look pretty decent at a distance, though they may not function up close.
You could possibly take it one step further and have a biome for every structure you build (so like 1 or a few pixels per house), which would allow you more control over the layout, arrange the houses however you want and avoid clipping/overlapping.