я подозреваю , что ошибка может возникнуть в этом моменте .
mainloop- бесконечный цикл крутится
к нему подключается root.after - цикл на смену шариков
и к ним подключается root.after - цикл на смену(перерисовку\движение) шарика . может в этих циклах налажал , какие-то конфликты действительно в асинхронности возникают.