There are a few things I'm interested in using this for 1) to make city connections via rivers (although Firaxis may have beaten me to this with RiverTradeRoad - I need to check it out), 2) to add gold yield to river bank tiles when there is a city connection on the river (think of it as "passing trade"), and 3) to make rivers navigable the first few tiles of their length (London, Rotterdam, etc are not on the coast but they are still sea ports)
The DLL mods that these would require I intend to implement via events, but haven't looked at what's requited in the C++ code yet
Edit: Terrain/Feature avoidance has been added by passing a call-back function - much the same way my land/sea route connection code works. The "standard" function excludes impassable features, mountains (unless the player is Cartage), lake plots if the player can't embark, plots with hostile units/cities, etc
Edit2: RiverTradeRoad is only used by the InternationalTradeRouteLandFinder methods, not by the city connection algorithms