OK, so I had a spare lazy Sunday (waiting for opponents to return moves! ), and I got curious about this, so I had a shot at it.
The solution I have coded seems to work OK at least on my browser.
One thing that quickly stands out is that our current display jams the stones together tightly - there is no gap between them. This means that they can’t be nudged without bumping into (overlapping!) each other, or bumping their neighbours the same way.
For my first attempt at this, I solved this by making the stones a bit smaller. Thus they can move around a bit without having to mess with their neighbours. This matches how my own real (physical) Go board is.
I have noticed that Drwyin’s real board, in his videos, has the stones as big as the squares, and touching each other, so I don’t know what is best.
Anyhow, this is what the result looks like:
Interestingly, when I went back to the real server and it’s touchy stones, I found that I prefer the more spaced look, with gaps between the stones.
Interestingly also, Sabaki has about the same gap between stones, and the same amount of nudging of stones - a fluke, I only just looked at it!
That said, now that I seem to know how to do this, it would be fairly trivial to do it the big-stones-touching-and-bumping-their-neighbour way, if that was considered better.
PS: For comparison, here is what the same game looks like with the current normal touchy stones Goban (without my changes):