Just to expand my comment into an answer :)
As noted by others, the easiest way to scatter points about an origin is to use some random distribution centered there, and then "move" the points by drawing new ones from that distribution.
However, it can be useful to have an energy function to minimize instead (it lets you add other terms, for example).
The obvious choice is the sum of squared distances, but this can be expensive. An alternative employed elsewhere (e.g. machine learning) is to use a random subset to compute the gradient, changing at every step during the decent.
More exactly, given a point set $P$, at every step $t$ during an iterative minimization procedure, choose a random subset $P_t\subset P$ such that $|P_t|<<|P|$ and maximize:
$$
E_t(P_t) = \sum_{p_i\in P_t}\sum_{p_j\in P_t} || p_i - p_j ||_k^k
$$
where $k$ denotes the order of the Minkowski metric to use. Often $k=2$ is fine.
This can be useful, though, if you want to weight outliers more or less.
This one is also nice because it is differentiable. You could also maximize the determinant or a matrix norm of the covariance matrix of $P_t$.
Also, although this seems like a hack, note that, in probabilistic terms, this approach is expected to work on average. See here.
Another idea, using derivative-free optimization, let
$$
\mathcal{E}_t(P_t) = \min_{p,q\in P_t} ||p - q||_k^k + \alpha\,f(P_t)
$$
be your energy function at time $t$, where $f$ is the other energy stuff you want to add and $\alpha\in\mathbb{R}$.
Then maximize it with a gradient-less optimizer like differential evolution or CE optimization.
Notice you still change the random subset each time.
Notice this is a little closer to your original desire to simply ensure that the points are further than a threshold, rather than keep moving the average distances.