Finished testing: I did indeed find the data that determines which shadow data slots are used for whom. The table is sandwiched between the subroutines, which is why it's not easy to find. There's two different sets of bytes:
1. The first is the table for loading characters stats when a character joins your party. This is from 0689A-068AE (FF2us ROM with header). There is 1 byte per character ID. Values of 00-0F mean to load the initial stats for the characters (referencing the table at 7AB00), and values of 80-84 mean to load the shadow data stats.
2. The second table is for storing character stats in the shadow data slots when a character leaves your party. This is from 0691D-06930, again with 1 byte per character ID. Values of 00-04 mean to store the data in that shadow slot, and a value of 80 means don't store.
So, here's how the data lines up with the character IDs:
ID Character Instance Load Store
-- ------------------ ---- -----
01 Cecil (Dark Knight) 00 80
02 Kain 01 00
03 Rydia (child) 02 04
04 Tellah 03 01
05 Edward 04 80
06 Rosa 05 02
07 Yang 06 03
08 Palom 07 80
09 Porom 08 80
0A Tellah (second time) 81 01
0B Cecil (Paladin) 09 80
0C Tellah (all spells) 81 80
0D Yang (second time) 83 80
0E Cid 0A 01
0F Kain (second time) 80 00
10 Rosa (second time) 82 80
11 Rydia (older) 84 80
12 Edge 0B 80
13 FuSoYa 0C 01
14 Kain (third time) 80 80
15 Golbez 0D
I've tested that adjusting these values changes what data is stored in the shadow slots, and have loaded post-leaving data for other characters (like Edward) successfully. This should open up some possibilities for those of you that want to change the make-up of the party during different points of the game.
However, there is still a limitation with the way this works: since there's only 5 slots, the character changes must be pre-determined, and not chosen by the player. The most flexible you can be with this is to keep two or three permanent members in the party and have two or three optional members, from a choice of 5 different characters. That isn't going to be good enough for my hack, so I've conceptualized and have started writing new subroutines to fix this, so that all 14 characters in my hack can be switched in and out freely.
Whew! After all that work I deserve a

...or maybe two
