The solution for SPI is use 1 microcontroller as a master, the rest as slaves. To implement random access to the spi from slaves, you can use gpio and make ISR on the master MCU (1 line for SS and 1 line for interrupt request per each slave). Transmitting from slave to slave in this case is possible, but rather complex.
The other solution might be daisy-chain scheme, that would reduce number of SS lines, but anyway there must be a master. The bigger network, the bigger latency, but imho daisy-chain will be more effective compared to the first one.
In any case both of them will require a lot of programming. If you're a beginner, it will be very difficult to make it works.
I2C is much easier to use for multi-master communication (moreover, atmega has very convenient twi module for that).
What is the purpose of your communication? Data rate?