@relsqui
You have successfully nerdsniped me. I think I have figured out a peeking-resistant solution that involves asymmetric encryption, but that requires participants who are able to comprehend asymmetric encryption...
1. Everyone generates a private-public key pair, and anonymously submits their public keys to a list.
2. A designated shuffler generates a derangement of the list and encrypts each anonymous public key with a different public key, and posts the list of encrypted keys.
3. Each participant is able to decrypt one anonymous public key from the list. They encrypt their own name with that decrypted public key, and post it. Each person is then able to decrypt one other person's name with their private key, and that person is who they're giving a gift to. Nobody knows who the recipient of their name was, and nobody ever sees anyone's name besides their designated recipient's.