Or could you suggest any other communication protocal? I looked up SPI but it looked like slave select would've been a problem and from my understanding of UART, it could only work between two devices and not more than that.
With SPI you have exactly the same problem as with I2C: one master, several slaves. As ard_newbie suggested, a CAN bus might work, you might also get it to work with an RS-485 bus but you have to take care in hardware that you have some congestion recognition. Ethernet is another option, which is especially interesting if the Arduinos will not be placed close together.