тебе в ифчиках на оверлап просто надо не только менять направление форса, но и выталкивать в сторону, противоположную вектору движения
если я правильно тебя понял, то я добавил еще
circle.pos.add(direction)
Стало лучше, они не проваливаются друг в друга, но теперь постоянно отталкиваются. Потому что я хз как правильно посчитать силу отталкивания