Ok, so I got this idea:
Implement some kind of special purchasable ability (like double XP) that would guarantee pulling only non-dupe characters or at least reduce the chance of pulling a dupe.
So after buying, it would be active for like 24 hours or so, and during that time, while opening any souls, the program would check if the randomly chosen char is already in the roster, if yes, it would try to pick another one. Exception would be if the player roster already had all the chars that a specific soul can grant, then it would just pick a dupe (otherwise it would be stuck in an infinite loop).
It doesn't necessarily have to be 100% chance of non-dupe pulls, it can be like 50% for example (so it fires for one soul, but doesn't fire for the next one).
Anyway, it would greatly increase the chances of pulling unique chars. The cost of the ability itself should be quite high of course.
What do you guys think?