scheduling time in AVR
Fairly easy.

Time1 = millis()
  If (time1minus time0 is more than timeelapsed0) process relay0

And repeat that for two other relays.

Time0 is updated whenever a new packet was received.