Jeżeli chcesz żeby div zawsze poruszał się z tą samą prędkością to czas trwania ruchu nie może być stały. Musisz uzależnić czas od drogi jaką ma do przebycia element. Dlatego też musisz jakoś tę drogę wyliczyć, najlepiej chyba na podstawie współrzędnych - aktualnych (przed rozpoczęciem ruchu) i docelowych (po zakończeniu animacji). Odejmujesz od siebie współrzędne, odpowiednio |x2 - x1| i |y2 - y1|. Musisz pamiętać żeby wyznaczyć wartość bezwzględną, bo możesz dostać ujemne wyniki. Jak to zrobisz, to dostaniesz w pewnym sensie długości boków trójkąta, którego przeciwprostokątna to szukana droga. Mam nadzieje, że wiesz jak się liczy długość przeciwprostokątnej, mając dane a i b

A jak już wyliczysz drogę, to możesz ją po prostu podstawić do .animate() zamiast tego '2000'. Z tym że jeśli to zrobisz to animacja będzie bardzo szybka więc będziesz musiał dostosować tą prędkość do swoich potrzeb, np. przemnożyć drogę przez 5 i dopiero wtedy podstawić wynik do .animate().
To jedyne co mi przychodzi do głowy o tej porze