There's a really simple way of copying your current party and just storing it away, inside a variable. In a script command, you put in:
$game_variables[29] =
$Trainer.party.clone
This clones your current party, stats, natures etc into variable 29. You can change the variable to anything you want, just try not to override the default ones.
The next step you can do is clear your party. Since the variable has all the party data you don't need to worry about it getting lost.
Afterwards you can give the player a Pokemon for a while with the popup message or, in the case of switching player character, silently give them a Pokémon.
poke=PokeBattle_Pokemon.new(:PIKACHU,20,$Trainer)
pbAddPokemon(poke)
pbAddToPartySilent(:PIKACHU,20)
To give the player back the Pokémon stored in the variable, you can just put the following script command:
$Trainer.party = pbGet(29)
I'd recommend clearing whichever Pokémon was in the party before restoring the old party, though.
That's all I have.