First of all, let me just say that I'm among those who would love to contribute to Dwarf Fotress, with actual code. Sadly, DF seems to have neither a dev team nor an open source policy... While this may help ensure that Toady's vision of the project never falters, it also makes updates painfully sparse.
I'd like to suggest a more algorythmic approach to DF's name generation. As it is right now, the names sound neither poetic nor logical: no rhythm seems to be used when putting the words together, and every terrain type seems to draw upon the same list of words. I got the "Hairy Spine of Secrets", "Quick towers of proliferating" and "The livid hills of dye" on the latest world I generated. Granted, I realize much can be lost in the translation, and that these names do have symbollic meaning, but still... It would be nicer to have the names spring out immediately.
I use rhythm constantly, almost unknowingly, whenever I write real prose, and it shows. The text simply has a more cursive feel, as the reader never needs to switch from one rhythm to another while going through it; there's also the added bonus of suggesting a certain pace or attitude to the reader. To obtain the right rhythm, simply assign two integer value to each word - one for the number of syllables, and 1 for the rhythm itself, where the bits set to "1" represent stressed syllables. When hunting for an iambic foot or dimeter, the program would still (presumably) pick a word randomly from the list assigned to the relevant terrain/city class, but have a greater tendency to exclude words which did not fit into the rhythm. This way, long and convoluted names can be included without fear of them sounding particularly awkward.
Granted, the idea of using rhythm might appear unrealistic. Dwarven/elven/kobold names on a completely different world would certainly not match the rhythmical requirements of English phrases. And it seems the newest version has cut down on overly long names, making rhythm somewhat unnecessary. Still, I get some "clean stormy prairies" and the like that could make use of it.
What is necessary, though, is a way of keeping names thematically cohesive; I don't simply mean that swamps should carry nasty names (indeed, it could be argued that some swamps ought to receive nice names, just like the great icy mass of Greeland in the real world), but that the game should establish how poetic, abstract, erudite and "alive" the words ought to sound ("alive" words include personifications, such as "wise" and "stealthy"); each word might also alter these requirements slightly. Of course, the requirements would simply offer a greater percentile chance for certain words to be rejected. Take "grainy", which has an "alive" rating of 2 on a scale of 1-10 and an "abstract" rating of 3 (compared to harsh, which can very well have 5 in each rating) - if the word only demands an abstract rating of 7 and alive rating of 10, "grainy" might have an extra (7 - 3) * 10 / 2 + (10 - 2) * 10 / 2 chance of being rejected.
Note that some words can describe abstract concepts (like persistent) that may nonetheless apply to people.
Apart from these, there could be ratings such as "desirable", "dark" and "powerful". "Hairy" isn't particularly imposing or powerful, so "Hairy Spine of Secrets" doesn't make much of a name. Not to mention the fact that secrets are abstract, whereas hair isn't. "Morbid spine of secrets" or "Hairy spine of muttons" both seem somewhat more feasible. Note that I consider even words like "vanquished" powerful, not because of their actual meaning, but because of their feel.
Names would also be made realistic if they drew upon actual weather conditions, landmarks or historic figures / events ("plain of the collosus" or "valley of blood") .
Oh, and it would also help to catalog adjectives based on whether they involve the object's size, shape, age, color, origin and material, or are simply related to how an observer would feel about them (beautiful, grandiose, frightening, scary etc). This way, you can sort out multiple adjectives in the same name more effectively.
The whole point of this algorythmic approach would be to avoid ridiculous names like the "hairy" thing above (I got a lot worse, though, such as jungles of lacy love and whatnot)... I can think of many ways of implementing all these features that wouldn't honestly slow the game down. By using something of this sort, names like "Facebringer" or "Prophet" would have a far smaller chance of emerging.