This is not an answer to the mathematical question. But it is an answer to the practical problem, which, I think, is nice enough to be shared, and it doesn't fit in the comments.
Many years ago, a group of my friends asked ourselves this question, for the exact reason you give (distributing Christmas presents), and while all of us mathematicians and computer scientists were coming up with very complicated ideas, a non-mathematician came up with the following very simple procedure:
Each person chooses a random number. Then the numbers are sorted, and each person gives their present to the one with the next largest number (except the person who chose the largest number, who gives it to the smallest).
This does not, of course, pick a fixed-point-free permutation uniformly like you asked, but a cycle with maximal length, by choosing a conjugate of the obvious standard $n$-cycle.