Yes, you’ll want to avoid any sample loading within a song. You may get away with switching sounds on non-sample-based softsynths (they usually switch very quickly), but loading a different set of samples within a song does not work well. Not only does the loading take time, but it also puts significant strain on your system, so other non-sample sounds may cut out as well.
So you’ll definitely want to have all sample-based sounds loaded at the start of a song (if you need fast switching between songs, you’ll even want to have all of them loaded at the beginning of a set, so you should start putting your sample-based instruments into shared racks NOW and not put your plugins into songs directly).
To avoid sudden peaks in processor utilization due to switching, I’d also recommend to keep all these sample-based instruments active (switched on) from the beginning of the song and switch between them by simply activating or de-activating the MIDI routes from your keyboard to them.
So if you have two or three different sounds e.g. in Omnisphere, you could put them in a Multi inside Omnisphere and simply switch MIDI sounds channels - then you only need one instance of Omnisphere. Or you create multiple instances of Omnisphere (with linked racks, this means TWO different linked racks, both with Omnisphere inside them) and simply use song states to change the routing from your keyboard to one of the instances.
Using rack states will not help you here - when you have Omnisphere inside a rack and then use a rack state to switch sounds in Omnisphere, it will still have to load the sounds from disk and create the interruption.
What WILL help is using Omnisphere inside a rack in Multi-Mode and using rack states to simply switch MIDI routing within the rack (without changing Omnisphere configurations on rack state change) will definitely clean up things.