Here is a picture of both river methods in action. On the left, the river goes through the middle of the tile. On the right, the river stays on the edges.
As you can see on the left, the trees that sit on top of the river spawn would have to be removed. Also, the river has some unnatural looking angles when it is doubling back, but those can probably be smoothed out somehow. Actually, I may not want the rivers to double back at all. It may just create a mess on the map without really benefiting the simulation. I am inclined to make areas that have several river tiles next to each other into lakes. The same for rivers that flow into a dead end of hills and mountains.
The river on the right looks much cleaner as it winds around the trees. Its limited fork options may actually be a benefit since it makes it more difficult to double back on itself. Also, if I did need to go through hill regions, it would look more natural since it would slide between the hills as if through a canyon.
I think I will create a coordinate system for the rivers that flow around the edges of the tiles. I can use the current Vector Field as a base, and as each river is spawned, give each Vector 6 sub-vector offsets where the river spline points will be located. The hard part will be determining which side of the hex the river will flow around. I suppose the first pair of spline points can be random around the hex, with a given direction of flow, and then it flows from there.
So a tile with Wet or Moderate Precipitation would almost always be the originating tile for a river, a check could be performed to see which nearby tile has both high precipitation and high elevation, and start the river between those 2 tiles. Then the river will flow with a preference for downhill, towards wet precipitation, and towards ocean.