I just noticed an issue with using the ComputeGlobalKey method on the ckoEmail object. That method gave me different values between calls to first get the message with the header only and then subsequently pulling the full message. This only happened on email from a particular sender. I didn't notice this with other messages.
The global key is the MD5 hash of the following header fields: Message-ID, Subject, From, Date, To. (I'm sure you knew this.) If the headers are different, then the global key will be different.
Please do this:
1) Get the message header-only and save the email header to a file via emailObject.SaveEml.
2) Then get the full message, and again save it via emailObject.SaveEml.
Examine the header fields of both to spot any differences in the mentioned header fields.