The motors take one step each loop (~2ms), so if you move the motors one turn and write to EEPROM each loop, then you have already used 2000 writes.
So the chip could be failing after 50 motor moves. Same problem with an SD card.
If you want to write to EEPROM, you should do that once, after the move is completed.
For example in a next switch statement.
I would forget the EEPROM for now, and try to code the motor movements first.
If that works, then you can think of writing to EEPROM.
The goPos() function also takes care of that. Just enter a new position.
That new position can also be negative (forwards or backwards from the start position).
The goPos() function moves all motors at the same time once new positions are programmed.
I assume you want different (and random) new positions for all motors.
I will try to post some code when I have time.
Leo..