Well, i´ve just had a simpler version using the available method to remove points from the pointcloud :
Rhino.Geometry.PointCloud.RemoveAt(index)
but somehow this was running in snailspeed. So i´ve decided to create a new pointcloud and replace the old one which seemed to be much faster. After i´ve seen this is not really fast with large clouds i´ve added multiprocessing. It might be simpler to understand without it
btw. fighting the noise in your cloud might be better done in CloudCompare by smoothing using MLS.
c.