I'm not trying to bring you down but It looks like you're working on a fairly large project, if you're planning to run 18 I2C devices you might need to rethink things. A few years ago I wanted my controller to expand to large levels and went down the road you are heading on and for me it didn't end well. I attempted to make it work for months, even went to the expense of getting lots of PCB's made. I tried a few buffers, the pca9507 was the best. Running multiple pca9507 like you are I was able to successfully run 22-24 devices with about 100 feet USB cable total but it wasn't reliable. Even with only a few devices connected it wasn't perfect. I hate to say it and I hated to read it when I was doing this, it's just not possible if you need reliability. For any chance of it working you would have to code a strong CRC check and figure out how to handle the bus locking up.
Bottom line is you need to look at other protocols such as RS-485 or CAN bus. If you really want to keep going look at the PCA9615 to split the I2C signals into differential signals, personally I haven't used this as I finally came to accept this isn't the route a person should be taking but this does sound like the best bet.
Here's a good article explaining how differential signals works.
A few weeks back, we talked about the no-nos of running I²C over long wires. For prototyping? Yes! But for a bulletproof production environment, this practice just won’t make the cut. This mo…
hackaday.com
Here's a pic with most of the stuff connected, I had 8 AC power bars connected as well at one point. All that and more went in the trash.