Souls have # locked in them... If a new character is added which causes numbers to change.... then it is possible to pull a new character from an existing soul. However, the odds of that happening are very slim. The character numbers don't change that much. If they add an assassin character.. it may add 1 to the assassin table.. that 1 may cause a shift in souls... say the new character is at position #3 in the table. If a soul is already assigned #3, it'll open #3. So, If that #3 is the new assassin character.. there ya go... It's rare, but can happen - you could also win the lotto... so.. yeah.... 99.9% of the time you won't get new characters from OLD souls.. you have much better chances of getting new characters from NEW souls.
Everyone that got, for example, the werewolves before the event started did that with new souls .. not old souls.
It's always better to horde frags than it is to hoard souls.
As for the crashes and seeing the same souls.. the souls don't change their assigned number once they are generated.. so if the app crashes.. you still have the souls with the exact same #s assigned to them - thus the same characters. If you think about it, it makes sense in terms of preventing exploits. If the souls were a different # each time they were dropped into the BOS.. you could drop.. not like the characters, force quit the app, relaunch and drop again until you got characters you wanted.