However, some of the functions are highly abstracted like Wire.endTransmission() which returns 0x00 on success
If you don't like the high level interface of the Wire library you're free to implement your won library, nobody says you need to use the one the Arduino project provides. In some cases (p.e. if you need I2C multimaster functionality) you have to write your own routines because the Wire library doesn't support that.
But keep in mind that the example you described above is quite unusual (the device gets broken in the middle of an I2C transaction) and I don't think that the I2C standard supports that such situations are correctly recognized. So it might be of an academic interest how the AVR hardware reacts in such situations but it's not relevant for practical use in my opinion.