Oh, one more idea... since "salting the earth" thing was done because players actually WANTED it to happen sometimes (and sometimes they DO NOT)... how about making "raze city" and "salt earth" two different things?
Heck, make it three options.... When you click on "raze city" it should popup a window with options of:
1. Salt the earth: Kills everyone, destroys all buildings, salts the earth in the area preventing farming (and thus rebuilding) in the area for years to come
2. Kill the population: Slaughters all the population and leaves behind a husk (which takes DoT from neglect). The husk can be reclaimed (or can be made irreclaimable by colonizing nearby at a different spot) by a pioneer of choice as a new level 1 city which keeps only the generic buildings the previous city had (aka no buildings specific to conclave or town or what not). Prevents the "conquered" unrest.
3. Burn the town: Destroys all buildings leveling the town and allowing recolonization, a percentage of the pop survives and escapes to join other cities with a preference for other sides' cities.
Monsters would have their own special attack modes like:
1. Eat the populace: Kills everyone leaving behind a husk that can be rebuilt upon
2. Destroy town: Kills everyone, destroys all buildings. only available to monsters of specific caliber, like dragons or giants or the like.
No matter which option is chosen it then is resolved based on town population and army/monster strength in the way I described above (with pop kill, building destroy, and village resist figures for attackers and the city taking damage to its pop, building having HP based on cost, and villager resistance being based on pop count)