From what I understand, midi messages can have timestamps into the future, but that implies buffering on the receiver end. Do most MIDI instruments not support enough buffering to overcome lag? Because in sequencing, the future is pretty-well known.
Yes, they have timestamps. But if you do buffer (or better to say, delay it), you introduce latency, which is even more worse then jitter. The ideal is 0 latency. And another downside with buffering, you would need to manifest the buffer time at all device you trigger to be the same time otherwise you do not stay in sync.
Edit: Actually midi note on events that are being sent to devices do _not_ have a timestamp! Only events that are persisted in a file may have timstamps.
MIDI 1.0 messages do not have timestamps. (Sys Real Time does, but notes and controllers don't.) Timing is managed by the MIDI sender, and any buffering happens in the interface.
MIDI over MIDI cables is fundamentally not a tight protocol. If you play a four note chord there's a significant time offset between the first and last note, even with running status.
With early MIDI you had a lot of information going down a single cable, so you might have a couple of drum hits, a chord, maybe a bass and lead note all at the same moment.
Cabled MIDI can't handle that. It doesn't have the bandwidth.
Traditional 80s/90s hardware was also slow to respond because the microprocessors were underpowered. So you often had timing slop on both send and receive.
MIDI over USB should be much tighter because the bandwidth is a good few orders of magnitude higher. Receive slop can still be a problem, but much less than it used to be.
MIDI in a DAW sent directly to VSTs should be sample-accurate, but not everyone manages that. You'll often get a pause at the loop point in Ableton, for example.
The faster the CPU the less of problem this is.
If you're rendering to disk instead of playing live it shouldn't be a problem at all.