=Michael Kleber
My impression of Secret Santa is that you're supposed to have a random n-cycle, not just a random derangement. With a random derangement, for example, you might end up with a bunch of pairs of people each unknowingly just exchanging gifts with each other, which seems to me undesirable.
OK, tastes differ. I don't recall any restriction to n-cycles. I actually enjoy the craziness of not knowing what size cycle you will wind up in. (Surely ALL-pair derangements are relatively rare--a vein of homework exercises throbs here!<;-).
Making a random n-cycle out of a random permutation is easy, of course: each person gives gifts to the person who comes after them in the permutation... Improvements welcomed, since this looks pretty bad to me.
Your method will work fine for n-cycles. In fact, more simply, since we basically hide the random permutation by leaving the envelopes face down during the shift step, we might as well just write our names in the clear on the fronts as well. Then after the shift step we just throw them all in a mailbag (never peeking at the fronts) and then open our own self-addressed envelopes to see who shifted in. Although this is mechanically a smidgen trickier than just drawing names, and might be cleverly improved somehow, I think it's conceptually comparable since the ephemeral global information still is just a single random permutation. Now what about those pesky derangements?