When you get this sort of jungle it is best to weed out the overlaps somehow and choose the best representation.
Since the data is channels, perhaps you can convert the points to 3D lines? There are some simple utilities for this or a python script can do it. you might have to convert the points to xyz points first.
Is there a structure to the data that you can exploit, eg are there codes to identify cross sections or bottom of the channel and banks?
Then it is easier to identify the clashes and reduces the number of points significantly.
Lines are also useful as break lines if they mark an edge and will improved the shape of the channel significantly even with sparse readings away from the rivers. If you have a spot height on a hill and no other data around, find some contours or make up a ring around the boundary at the bottom of the hill to avoid interpolation jumping from peak to peak.
I set up a process (maybe a model) to load all the data as lines, then build a surface and view it, then go back to edit the sources and reload.