Some of what you say just now does not make sense. Please consider that the drum kit is in effect a single instrument, except that each different note in the instrument in fact plays a different sound.
Yes, I think I have been staring at the code for too long
I use the same code in my program to do several different things. Much of it processes both normal instruments (only with program changes) and percussion (with note-on/note-off). I keep "thinking" drum kits are separate banks, like instrument banks, though I know you change them with a regular program change and not a bank select. (Are they like banks? What actually happens in hardware when you do a kit change? Does it swap out all of the drum sounds, or does it just point to another location to play the sounds from?)
To clarify, my intent is to treat each percussion note as a stand-alone instrument during file modification. My program can already do this, no problem, as long as no kit changes are involved.
For example, a file has a drum track using
GM Kit 0 Standard Set
37 Bass Drum 1
39 Acoustic Snare
I would let the user choose any other drum kit for either the drum or cymbal (or both), and it would (theoretically) hop between the kits (via program changes) as the track plays. They could also change the drum or cymbal in to any other instrument from the new kit as desired.
So after modification,
GM Kit 0 Standard Set
37 Bass Drum 1
GM Kit 48 Orchestra Set
51 Timpani D (used to be Kit 0 39 Acoustic Snare)
The file would then need to rapidly alternate between Kit 0 and Kit 48 every time a drum is followed by a timpani and vice versa. This was the original question for this particular post, whether this was possible and whether it was feasible. It would require inserting lots of program changes, Thankfully, now that my brain has been on other things for a few days, I realize it does not also need a bunch of bank selects inserted

Which dramatically increases the feasibility of doing it. I think.
But practically speaking from a programming standpoint, it would be easier for me to only allow changes that move all percussion currently on a particular kit to a new kit, rather than being able to piece it up all willy nilly. So if the user chose to change GM Kit 0 to GM Kit 48, all percussion on the track from GM Kit 0 would also go to Kit 48.
If it helps to visualize, here's a screenshot of drum kits in a GS file. the currently selected kit is the blue one in the middle. Kits can be changed by pressing left or right, instruments by pressing up or down.