I think my theory is probably the most sound. I'm not a programmer, but I know how to write programs.
Simplest explanation. Start with 3 5* assassins. Odds for each at 1/3. Make it where you use a random number from 1 to 12. 1-4 is ACotD, 5-8 is VHE, 9-12 is Rainmaker. Add Beast Eddie and keep the same 1-12 range. Only difference, now 1-3 is ACotD, 4-6 is VHE 7-9 is Rainmaker, and 10-12 is Beast Eddie.
I'm fairly certain there is an RNG seed value that's associated with your account and each stack of souls, which only changes when you cash it in and it syncs with the server. Since computer rng is not random and is based on a formula, the result will always be the same for the same seed value. What's changing is the character that a specific number gives you, although as in my example it doesn't guarantee there will be change.





