My hack also has more than the usual three starters, and I approached it this way: Store the species number in a variable. Then, use bufferpokemon 0x0 0xVAR_NUMBER, with var_number being the variable holding the species number. This doesn't preserve nicknames, of course...there's always a way, and you'll probably have to do alot of work. I have an idea about storing the nickname to five variables, if necessary, so try working from that.
I believe that they simply use eight more flags then the usual, to dictate the eight new badges. They aren't displayed on the trainer card, though, unless you do a little ASM.