Crap! Sorry again for the delay, let's see if we can get you sorted out
If this is a full-screen pass, I would suggest trying the position reconstruction from my other post and see how that works out for you. Also - are you sure that the water surface is written to the depth buffer? If the game draws it as a transparent surface, it may disable writes when drawing it. That would mean you're actually using the land surface underneath the water as the reflection start point. I would first try using the projected view ray I mentioned and see if that gets you anywhere:
o10 = mul(modelView, v0.xyzw); //viewPosition
o10 = float4(o10.xy / o10.z, 1.0f, o10.w);
If you're doing the SSR as part of the water shader itself, i.e. at the same time as drawing the transformed water geometry, you should be able to calculate the view space position and pass it through to the pixel shader, then use that value directly instead of combining it with a linearized depth value.
Let me know if any of that helps.