After a lot of effort, have finessed Locate#geocode to mostly work. Had to remove support for sublocalities and administrative area level 3s, though, due to Google's geocoding service not supporting specifying what level of a hierarchy one is searching for.
Tweaking #geolocate to work better; it now delegates the initial lookup to #reverse_location_search, which performs a series of nested bounds searches over currently known locations. Still requires (a degree of) exact text matching, but is safer than what was being done before.
Attempting to get the newer mongodb geospatial queries to work.