This is all for tonight... I edited line 33 in write-eeprom.py like this:
# time.sleep(0.1) # needs some time to finish write, or fails [Errno 5]
time.sleep(0.004) # datasheet calls for ~ 5 ms wait
Which gives at 32k write time of ~16 seconds.
Sorting out the page write function will make a big difference as well.