thanks for your input! When talking about addressing, you talk about addressing registers and not about I2C bus addresses, right?
The read/write reg functions of the proposed new interface can simply be seen as convenience functions, mapping to actual calls to the i2c_read/write functions. So using the 'raw' i2c_read/write functions, it is very easy to interact also with devices that use 16-bit data registers.
As further optimization step I was already thinking, of inlining the read/write_reg functions anyway, so it would we might as well add something like i2c_read_reg16/i2c_write_reg16. But for this step some further analysis on the impacts of code size and some more implementation experience on all the platforms is needed...