Remember that the SLC-500 controllers have only one CPU to handle both messaging and logic, so you can trade some scantime for communications bandwidth by setting a bit in the Status file to process one MSG per scan, or process all queued MSGs per scan. This is the Communications Servicing Selection bit, which is S:2/15 for the Network port, and S:33/5 and S:33/6 for the Channel 0 serial port. Check out the Instruction Set Reference for details.
The way I like to sequence MSG instructions is with a Sequencer. I'll use an Integer register as the "message number", and each MSG instruction is conditioned with an EQU instruction, so when Message Number = 0 I'll fire my first MSG, and when Message Number = 1, I'll fire the second one, etc.
The .EN or the .DN bits of each MSG use a One-shot to ADD 1 to the Message Number value, which increments the sequencer. I reset the sequencer to 0 on the First Scan.