--snip--
Sorry can you help me understand this? Why would loading a new wallet require a rescan? Isn't a wallet something that stores your private key and transactions or something? What is it that I'm rescanning?
To be honest, i don't switch wallets very often... As a matter of fact, i run a node and the wallet is still a non-HD wallet (in other words, i haven't loaded a different wallet for many, many years). I just remember the last time i found an old wallet.dat (years ago) and i tried opening it, a rescan was also triggered.
This being said, it's very hard to give a precise answer as to what actually triggers a rescan. Everything depends on versions and specific situations. Which version was used to generate your wallet.dat, which version you're running now, did you change anything to your wallet since last synchronisation, which was the last blockchain height when you last opened your wallet.dat, did you open multiple wallets at the same time, which parameters did you use to open your gui, which parameters are present in your bitcoin.conf.
I know recent versions had significant changes when it comes to wallets and rescanning. For example, version 0.17 included a feature to scan the utxo db instead of rescanning, i think HD wallets became default in 0.16 (but they were introduced in 0.13).
In theory, i guess you could read the code and see why a rescan was triggered in your specific case tough.
But you are right, a wallet.dat should contain keypairs, transactions and metadata (amongst some other data)
Not a real answer to your question i'm afraid...