Usuwasz atrybut id
hook.removeAttribute("id");
I dlatego masz problem. Gdy statek wylosuje sie w to samo miejsce co wcześniejszy próbuje wykonać
var hook=document.getElementById("p"+randNum_y+number_chang);
i nagle masz błąd bo taki ID juz nie istnieje.
Rozwiązaniem problemu jest użycie data-* jest to sposób zapisu danych do znaczników HTML.
możesz zrobić sobie
<div id="test" data-x="2" data-y="34" />
i nie musisz modyfikować ID !
W JS odwołasz się poprzez dataset
var x = document.getElementById('test').dataset.x