Jerry said it's a MIDI-only project, no audio, no internal synths. All audio is generated on the remote machine.
What an interesting and unusual problem! I have no idea what it is, but it's certainly piqued my curiosity.
Assuming that the sampler isn't detuning itself, it would seem that MIDI data is getting munged in transit. To test that hypothesis, reproduce the problem and then go to the server and click on Kontakt's virtual keyboard and see if the note plays as expected. If it does, and I'd be surprised if it didn't, then something is happening to the data stream enroute to the server.
Is the pitch error a consistent whole number of semitone(s), or is it less than a semitone? If it's a dropped bit in the MIDI data, it'll be off by a whole number, e.g. 1, 2, 4, 8, etc. If it's less than a semitone, that would make corrupted MIDI data a less-likely explanation. If the pitch errors are inconsistent, my first guess would be that a non-pitched instrument's (e.g. percussion) MIDI was somehow being routed to a chromatic instrument.
How many MIDI ports (not channels) are in use? Could channel N on one port being mis-routed to channel N on another port account for the wrong notes?
Another test I'd perform: with the de-tune problem in play, start adding other tracks back in one-by-one. It would be very interesting if, as soon as one of the other tracks was un-muted, the sampler started playing in tune again.
Another thought: are there any tracks where multiple tracks are routed to the same instrument? For example, one track for MIDI notes and a separate track for keyswitches. Here's a hypothetical scenario: Track A has a wheel event that shifts the pitch, but you don't hear it because it's being negated by Track B that shares its channel. When you solo A, B's not there to zero the controller.