For the leader, the sprite displayed on the map, the slot number found with the party data is used to get the sprite ID from the character. I don't really see how you could add easily a slot. There are 16 slots in the party data and 16 character info blocks in the RAM. Same logic apply for party leader in towns. As for NPC, they work differently, but I know little about their loading process.
EE/030B: B95018 LDA $1850,Y (Party information for the current character)
EE/030E: 8940 BIT #$40 (Is the character available?)
EE/0310: F017 BEQ $0329 (Branch if not)
EE/0312: 2907 AND #$07 (Isolate the party number for the character)
EE/0314: CD6D1A CMP $1A6D (Compare to the number of the active party)
EE/0317: D010 BNE $0329 (Branch if not equal)
EE/0319: B95018 LDA $1850,Y (Party information for the current character)
EE/031C: 4A LSR A (Divide by 2)
EE/031D: 4A LSR A (Divide by 4)
EE/031E: 4A LSR A (Divide by 8)
EE/031F: 2903 AND #$03 (Isolate the character's position in the party)
EE/0321: C558 CMP $58 (Compare to the value of the general-purpose variable)
EE/0323: B004 BCS $0329 (Branch if equal or greater)
EE/0325: 8558 STA $58 (Store the position number to said variable)
EE/0327: 845A STY $5A (Store the character number to another such variable)
EE/0329: C8 INY (Point to next character)
EE/032A: C01000 CPY #$0010 (Processed all 16 character slots?)
EE/032D: D0DC BNE $030B (Loop if not)
EE/032F: A55A LDA $5A (Slot number for leader)
EE/0331: 8D0242 STA $4202 (Save as multiplicand A)
EE/0334: A925 LDA #$25 (Number of bytes per character in SRAM)
EE/0336: 8D0342 STA $4203 (Set multiplier B to 37)
EE/0339: EA NOP
EE/033A: EA NOP
EE/033B: EA NOP
EE/033C: AE1642 LDX $4216 (Load X with the product)
EE/033F: BD0116 LDA $1601,X (Sprite number of leader)