finally landed on a good algorithm for point relaxation with external repulsion geometry. solves ~8k points in just a few seconds and maintains a framerate of ~20fps. could be optimized more with spatial partitioning but im happy with it for now
point and click and point and click and point and click and point and click and point and click and point and click and point and click and point and click and point and click and point and click and point and click and point and click and #pointandclick