Что-то я пока не могу понять в целом вашей логики моделирования. Если вы обрабатываете коллизии, то где обработка движений? Где обработка скоростей? Почему коллизия приводит к изменению сразу позиции, а не velocity? Столкновение должно поменять вектора velocity у столкнувшихся кругов, а уже логика моделирования движения должна менять позицию для каждого кадра. Тогда и движение за мышью можно будет выразить просто как воздействие внешней силы ("магнитится" к мыши), т.е. как некоторый вектор ускорения, т.е. как некоторую дельту к velocity на каждом интервале моделирования.