It might already irrelevant for you but it might help others, I was experiencing the same issue, in the datasheet the following is stated:
To recover from a bus error, the TWSTO Flag must set and TWINT must be cleared by writing a logic one to it. This causes the TWI to enter the not addressed Slave mode and to clear the TWSTO Flag (no other bits in TWCR are affected). The SDA and SCL lines are released, and no STOP condition is transmitted.
So I just added the following line of code to my error handling routine (verify TWSR values):
TWCR = (1 << TWINT)|(1 << TWSTO);
And so far it works like a charm.