If possible, avoid those self-sensing direction chips. They are prone to oscillating when low pull up (even <10k) resistors are used because they are confused which direction the data is flowing.
I2C is an exception in that most, if not all, devices are open-drain. If the digital inputs on all 5V slaves are TLL you should be good by running the AVR and pull-ups on 3.3V. Devices can only pull the bus to GND via their open-drain switch. They should not power a bus signal to 5V. The open-drain is required because some slave devices want to do clock-stretching.