An easy to implement feature which would greatly aid in structure diversity would be an adjacent to placement / operation tag for structures - one which is checked on placement and world update within the adjacent regions only. This would allow for systems such as easy multi tile structures (have a preset of adjacency dependent structures which access the same UI) as well as water dependent resources not necessarily on water tiles (like fishing huts). Additionally, a system for multiple structure layers would be useful for things such as placing road underneath gate houses (versus having road speed and graphics logic tied to the gate house / structure itself) or buildings on raised platforms or fortifications in swamps or military areas. The same logic would be useful later for things such as seige engines, which could then be coded similar to settlers to be able to deploy into a structure and unpack later utilizing layers.
As a less pressing but still easy to implement - with a large payoff - concern, there should be a way to set certain resources to be visible only to certain races in the UI - as right now one can technically custom balance resources for different races in the API - but the visual support lags behind a bit (A nice way to do this might to be only showing the resources for the current races the player has under their control - you seem to already has a race.query function, so that plus some additional lines in r_race would go a long way towards making multiple player friendly races possible.
And finally, if there is the possibility of adding a quick build bar of some kind to settlements / hold shift to place multiple - it would greatly aid in building up settlements quickly. A priority queuing system would be ideal, but the first statement would be a simple step towards improving player UX. (Though the second could be done through a say: 1-10 array of lists collection with 1-10 being the priority level for each structure. That or a simple linked list ).