I had contemplated using a plane as well, and have constructed a model based on that as well.
Getting the displacement and water surfacing applied to both is easy, but I can't seem to use the river mask as an opacity function with either object type. Can someone confirm whether this should work or not?... and if it should work, some suggestions on how to get it working?
Applying the colour adjust node from the image mask to the plane's opacity function results in a black object instead of invisible.[update]
NVM, almost there.
1: Add plane, set size to image mask
2: Connect second terrain (minus fractal noise) to input of plane's default shader.
2b: Connect river mask to opacity function
3: Insert surface shader between default shader and plane's shader input
3b: Connect water shader to surface layer child input
3c: Connect river mask to surface layer blending shader
4: (Kinda weird
) Edit vertical adjustment of second terrain to position water level. In my test this is -16m even though the water surface is only 20cm or so below the unadjusted terrain level.
This results in just the top surface of the water. The preview render is looking OK. Running a test render... very promising
Back to low detail (Detail 0.35, AA 3, GI 1,1) but as you can see by the subsurface render in the second bucket there are no vertical faces, and the time is reasonable.
[attachimg=#2]