Victor: Some suggestions:
Remember spectators dont need to view the race in real-time.
Having a "frame buffer" can be usefull for smoother movement - theres no problem in having spectators have a 500ms delay or something. So you could keep inserting stuff into the buffer so it has time to receive all data from all cars. In the beggining, give 500ms of lag, so the buffer is "filled", and as soon as half the buffer's frames have full data, start playing. If the connection is 100% perfect, thats only a 250ms delay.
If the buffer is full, start playing so that there's no "loss" of frames. With a bit of luck, the frames being played are already full, and when it comes to the first non-complete frames in the buffer, they could have been completed.
Frame: A set of data of all cars, given a X point in time. I.E. for each X point in time, collect all data from all cars, then display it.
You problably already implemente this, OR it cant be implemented due to how LFS's netcode works, or any other billion reasons.