A water level won't work well while it's moving.
I wondered about using a visial beacon and have the rover work out the relative elevation of the beacon, but you need to know the orientation of the rover and then do some pretty precise optical sensing to get that working.
I wonder if there's another approach. I remember reading that it's possible to get very sensitive pressure sensors that can give you an absolute altitude to within a few centimeters. If you used a vertical accelerometer to detect short term displacement and a pressure sensor to give you a baseline to compensate for integration errors from the accelerometer, I think you may be able to get something working. I don't think it'll be easy to get the sort of accuracy you're talking about, but it might be possible if you get something working and then gradually refine it.