It seems very unlikely that handling Windows messages will be a significant bottleneck. That stuff runs in nanoseconds. You have a midi port and a serial port which are far slower, running in milliseconds. So you will probably be I/O bound, not processing bound.
Do everything you can to be I/O efficient in the respective threads. This might include using overlapped I/O and it might include using SetThreadPriority so the I/O threads have higher priority than the main thread.