I don't think I understand this.
An altitude won't work, cause it has a defined altitude, and fuzzy zone if used. You have a slope. So unless your altitude limit is at the top of the hill, it'll never fill the river.
Can't you just use a large Simple Shape Shader that's soft, allowing for shore masking, and than just apply Slope Limits for rocks and such?