Wherever they wait for ISR to finish it work - call normal function twi_isr( ). I found the following places
I have the impression that you didn't understand how the TWI hardware works. You don't have to change the twi.c functions in the first place as you did but check for the TWINT flag in TWCR inside the loop() (or where ever your sketch works most of the time) and if it's set call the twi_isr() function.
I need to convert this library in to a polling based library.
May I ask for the reason for this? maybe there's a better alternative.