I won't quote, just answer :)
Flattening: In my "fork" of Nore's mg mod I'm making flat area for each building. I copy the nodes there were and copy them up to 10 times. If there were no nodes below for 11 or more meters, then I use default:cobble as a basement material.
This way I always have the same nodes that were there before my "manipulations". Look at the picture:

As you can see, all the buildings are on their own altitude.
The right one didn't get the water and used cobble for it's "basement"... can't do anything to mapgen ATM.
Changes:
altered structures
structures try to preserve topology
structures try to adapt to biomes, thus using desert stone in desert instead of cobble
no flattening
memorizing villages positions
loot in chests
flying villages
water-villages (those right above the water with channels instead of roads)
basesments for every building (so those do not hang in the air)
potentially, underground villages
some LVM workarounds
The thing is, LVM is too buggy, does not consider decorations, fail to save structures from mapgen's caves, collides with other LVM usages (one may want to use only ONE LVM if he/she wants consistence, since LVM copies a part of a map and then writes it back, no one can really tell which LVM would be the one to "win" and preserve it's changes), does not set is_generated flag (so mapgen may not know there's something already generated!), takes more memory than minetest.set_node() etc etc...
I'm now in a middle of trying to combine all my LVM usages into single BIG one.
So....
I'll definitely look into new villages when the time will come :)
But the only thing I really want to figure out is how one can use perlin noises to get a number of positions to spawn vilages that are not connected.
PS: It's true, that there is this kind of a code within Nore's mg and therefore my villages, but I don't understand it. Anyone care to explain?