Bryan L. Hughes says the reason postfix does double receipts, is because it runs everything in parallel. We can't fix this problem in postfix without serializing and slowing postfix. However we can use formail in our procmails to handle this.
Add this at the top of your .procmailrc file to stop double receipt of mails from aliases.
:0 Wh: msgid.lock | formail -D 8192 msgid.cache :0 a: INBOX.duplicates
INBOX.duplicates may be replaced with whatever location seems reasonable. This has the benefit that it keeps copies of the messages flagged as duplicates.
WARNING (from Bill Weiss) This will trash any emails which share a message ID with an email received within the last 8k emails. In an ideal world this would be fine. However there are documented cases of people abusing this sort of setup to keep emails from being received, especially on email lists.