The following is not ideal, but it will work for your particular problem reasonably well:
Step 1: create a function of x and y and interpolates the height of the pond surface; the DeleteDuplicates function is slightly problematic in that it sweeps under the rug the possibility of a pond that could have "caves". Hopefully yours does not.
Interpolation[DeleteDuplicatesBy[allpoints, Most],
InterpolationOrder -> 1]
Step 2: use RegionFunction to suppress points in the "water" that lie beneath the elevation of the pond;
pondwater = Plot3D[-45, {x, 0, 700}, {y, 0, 700},
PlotStyle -> {Opacity[0.5], Blue},
RegionFunction -> (-45 > i[#1, #2] &)]
Step 3: combine Graphics3D objects
Show[myListSurfacePlot3D,pondwater]