You might wanna start by learning scripting in XSE and a very little about Hex editing at first. Rival's movement is activated from the pokeball you pick. If you pick Bulbasaur, the game runs a script like "you selected the first pokeball, so make the rival move to let him pick the third pokeball". It all happens in these tiny scripts:
A simple fix would be to reroute the variable 4001 check. If you want to do scripting after learning XSE, you can do this:
1. Write a script in a free space in your ROM like this:
where UVWXYZ is the location of the free space. Remember this address because it will be important for repointing.
2. Open your ROM in a Hex Editor (dont worry, we wont be doing complex hex here), preferably HxD
Search for "DC 9C 16 08" hex values and replace them with "YZ WX UV 08" (According to the address of the free space). Do the replacement for everytime "DC 9C 16 08" pops up. What this basically does is tells the game to go to UVWXYZ instead of 169CDC
Method 2: A bit complex but easier steps and saves ROM spaces:
Open your ROM in HxD.
Go to 169CE4 and replace FF 9C 16 with 0F 9D 16
Go to 169CEF and replace 1F 9D 16 with FF 9C 16
Go to 169CFA and replace 0F 9D 16 with 1F 9D 16
Dont Ctrl+C Ctrl+V the hex codes because it will bug your game. Use Ctrl+B (paste-write) instead of Ctrl+V (paste-insert).