Can't send data from several master Arduinos to a single slave Arduino over I2C

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.