For my area the data returned from the currently hardcoded "reverse-geocoding" sites is commonly, either misleading, or too general.
Geoname.org often returns the names of old western "ghost-towns". These are not really helpful as a reference, since they seldom appear on current maps. Because much of my area is rural, Google Earth often gives me designations referring to electoral boundaries. Again, this is less than helpful.
The most obvious and most easily implemented solution would be the following. Have a method of entering a "reverse-geocoding" site URL with the appropriate command parameters, such that other "reverse geocoding" databases could selected and then referenced during "reverse geocoding". I have seen this done in other geo-tagging apps.
However; there is another very robust solution that comes to mind. Call this a "pipe-dream", because it might take a bit of work to implement in code. Allow a user to define their own table of named local regions (ie. Banff National Park or Spray Valley Provincial Park), defined by a user-specified polygon of coordinates. Give this table priority over external lookups. If the geo-tagging coordinates fell within the polygon, the specified Regional Name would be returned as the City, plus the Province/State, and Country specified in the record. One could even allow an average elevation to be specified in the table as a default. The user would need to do a bit of work once, but they would recoup that many times over.