Ein potenzielles Problem beim Verschieben sehe ich noch: Beim dragstop setzt Du ja die Koordinaten in den Eingabefeldern auf die neue Position. Diese haben jedoch je einen Eventlistener für "change" und der triggert natürlich auch, wenn Du mit Javascript etwas einträgst und veranlasst ein Neuzeichnen. Trägst Du die x-Koordinate ein, wird sofort neu gezeichnet, obwohl die y-Koordinate noch gar nicht gesetzt ist. Ich könnte mir vorstellen, dass das Probleme verursacht.
Weil ich es analysieren wollte, habe ich ein Demo ohne den ganzen Overhead gemacht und dort funktioniert das Verschieben und die Ausgabe der Koordinaten einwandfrei: