Did you completely close the client when swapping wallets ?
As far as I understand, it should work. Each wallet keeps a pointer to the last block it knows about. During the application initialization, the last block in the blockchain file is compared to what the wallet is aware of, and a partial rescan is performed if needed.
If I swap my wallet with an older copy, it takes a bit longer than usual to start, but the new transactions to/from my wallet are visible right away. (Not tested with two completely different wallets though)
There was a thread about a similar problem recently, so maybe there's an issue somehow.