The easiest thing to try is to use the standard constrained optimization algorithms to solve:
\begin{align*}
\max_P & \sum_i\sum_j ||\vec{p}_i - \vec{p}_j||_d \\
\text{s.t.}&\;\; \vec{p}_k\in\mathfrak{C}_{\text{unit}}\;\forall\;k
\end{align*}
for $\vec{p}_j\in P$ and some distance metric $d$.
You could also try to minimize in more of a Gromov-Hausdorff Distance style:
\begin{align*}
\max_P &\, \min_{i,j} ||\vec{p}_i - \vec{p}_j||_d \\
\text{s.t.}&\;\; \vec{p}_k\in\mathfrak{C}_{\text{unit}}\;\forall\;k
\end{align*}
Then run any good constrained optimization algorithm on it. I believe there is a convex form, if you are concerned with speed. In terms of software, here are some resources for matlab, python, mathematica, or libraries with multiple language bindings (e.g. this one). I find Differential evolution algorithms to work pretty well if the space is nasty, but this problem seems to be alright. You might even be able to just do gradient descent.
(A not-so-serious idea: make all of the particles charged $+C$ and run a physics simulation, i.e. numerical integration, of the system with your boundary conditions.)
Maybe also check out the paper An Efficient Algorithm for Minimizing a Sum of Euclidean Norms With Applications by Xue and Ye.
Hopefully I understood your question correctly. It doesn't seem like the initial distribution matters all that much, but let me know if I misconstrued something.