Even 14GB may not be enough to load an entire orchestral library. Consequently, Kontakt only reads a portion of each sample in advance and streams the rest from disk. Even with lots of RAM, large libraries can therefore still cause latency and dropouts due to I/O bottlenecks.
If the library resides on the same physical disk drive as your project audio, that could be your problem. Add another disk drive and dedicate it to sample libraries.
If you're already doing that - or can't - then Kontakt's memory-management features might help.
First, go into the instrument definition dialog (click the wrench icon, then click the "Instrument Options" button) and then to the DFD tab. There you'll see a setting called "DFD Preload Buffer Size". This tells Kontakt how much of each sample to keep loaded in RAM. The higher the number, the more memory it uses, but disk I/O goes down. You've got lots of RAM, so this'll let you utilize it. Try increasing the buffer size and testing until the crackles and pops go away, and don't go bigger than necessary.
Next, play the song all the way through one time and then look at the Memory indicator at the top of the instrument. If you're using a Multi, there will be a memory-used number for each instrument in the Multi.
This number tells you how much memory is being used for each instrument. It'll usually be less than your total RAM, but still be a big number. To the right of that number is a dropdown menu labeled "Purge". Select "update sample pool" and watch the memory-usage number drop, usually quite dramatically. What you've just done is tell Kontakt to unload all the samples that you aren't actually using. Even if you use many articulations, there'll be a lot of notes and velocities you never hit. Don't worry, if you subsequently edit the MIDI tracks, Kontakt will automatically load any newly-required samples.