При долгом нажатии клавиши события keydown генерируются пока она нажата. Задержка разделяет одиночное нажатие и долгое.
Поэтому ставьте какой-либо флаг и при каждом срабатывании проверяйте установлен или нет, так же при срабатывании запускайте таймер, который будет обрабатывать анимацию, в нём проверяете, что флаг ещё не снят и делаете перемещение и добавляете обработчик отпускания, в нём снимаете данный флаг.
Как-то вот так:
codepen.io/anon/pen/Jbaode