Working my way backwards from Santalytics, and my solution might also seem backwards, but here it is
Wow, that was a lot of fun!
GREAT exercise for Interative Macros!
I went down the thought process (as some other users did) of making 50 pairs, but in the end I solved both ways.
For my solution, I created all the possible permutations, filtered for scroogieness and self-selection, and fed the result into an iterative macro. My first attempt ran about 20,000 times without satisfying the scroogieness clause, so I ended up sorting by scrooginess and matching the scroogiest people first. Not truly random, but close enough for a Secret Santa!
Thanks @Carlithian for an awesome challenge!