Does anyone have any suggestions for level shifters?

The I2C level shifters have two problems:

  1. They are generally not very fast – I2C generally tops out at 400 kHz.
  2. They assume that there are pull-ups on both sides of the shifter, to each of the appropriate rails.

The problem with 2) is that the rise time of your communications signal will be determined by the pull-up strength, and how far towards zero you can pull the signal depends on the performance of the open-drain MOSFET in the converter. For slow UART rates (9600, 19200, etc) it will probably work fine; probably even with 57600 speed. I wouldn’t expect robust connections at higher baud rates, like 1 Mbps, using a I2C-based translator.