Evenly Spaced Points On Smooth Surface
I would suggest that you don't calculate the distance between all pairs of points, but only between pairs of points that are nearest neighbors.  You could store the points in some nearest-neighbor data structure, e.g., an octree, or even a fixed partitioning of space.  Some data structures might allow for relatively rapid updates, so you could even update after every iteration.

I'd also suggest looking at the methods used for simulating the n-body problem, as some of those might be applicable to your situation as well.  See https://en.wikipedia.org/wiki/N-body_problem#Many_bodies and https://en.wikipedia.org/wiki/N-body_simulation.

Also, you might consider adapting your objective function.  Rather than having all points repel, maybe you might have only those points whose neighbor are below a certain threshold repel; or you might make the repelling force a smooth function of the distance between the points, where this function is similar to $f(x) \approx x$ when $x \ll \tau$ (where $\tau$ is the threshold) and $f(x) \approx \tau$ when $x \gg \tau$.  You could select your threshold $\tau$ to be approximately equal to the expected final minimal distance that you think is achievable, or you could set it adaptively in each iteration.  This may require many more iterations, but each iteration can be done much faster, and it will avoid moving points that are already far from all their neighbors.