Makes sense. D3 is definitely the safest bet for fine-tuning those repulsion forces if you don't mind the learning curve.
I ended up going a similar route for the Markov visualizations. I initially tried forcing it through a heavier canvas engine because of the sheer volume of state lottery draw combinations, but finding that 'Goldilocks' zone for the collision forces in D3 eventually tamed the hairball.
Great work on this map. I'll probably end up referencing your layout if my node density gets out of hand in Phase 2.