Check if point is over another here.
If so move it a bit. For example with
this.setPosition(JXG.COORDS_BY_USER, [this.X(), this.Y() - 1])
When the point is created use
to connect the event handler to the point.
It might be possible to do this with a MultiAnswer problem checker, as described in the problem techniques pages. The one issue is that this doesn't, I think, provide a mechanism for hiding the answer blanks.
Which is to say, "no," I don't have any good solution, but if it were possible to tweak the answer blanks generated by the MultiAnswer object it would address the problem nicely.
For what it's worth,