The best algorithms I've seen, not tried, are those that emulate fractals. Usually the fractals are layered and patterned after the type of structures/layouts generated. For instance squarish fractal patterns for cities, and more organic ones for woods.

You certainly aren't tackling the easiest side of things there.