It would be easy enough to whip up a spreadsheet to do it. The grunt work is the data entry for all the names.
Just put the person's name in Column A, address in B, the amount they donated in Column C, a random number from 1-10000 in Column D, what prize(s) they won in Columns E, who offered the prize in Column F. Regen the random numbers before each prize, sort by lowest number and prizes won, and if there's five copies of whatever, just go down the list and give it to the five lowest numbers that haven't won anything. Do the prizes starting with singles and working up to the multi-copy giveaways. Once everyone has a prize, you start over again with the second round.
You could get fancier, but for a one-off, its not worth it. You'd spend more time dinking around with it than it was worth. So far as I know, all donations are considered equal for any prize not explicitly marked as having a minimum donation, and there are only a few of those, so you don't have to screw around with weighting algorithms or stuff like that.
When you're done, you can sort by publisher, copy and paste their info into another sheet, and email it to them (or whoever is doing the shipping).
A days work, to be sure, but not that big a deal. Shipping all that would be a monumental pain in the butt, though. If this is the only thing holding it up, I'll volunteer to do it (and if confidentiality is an issue, it could even be set up to be blind -- one person does the prizes, another randomly assigns the names).
That's assuming the donor list is more or less in one place. If that hasn't even been collated yet, there's nothing anyone else could do even if they wanted to.