We have been through this same discussion at our house. We came up with something that worked well when we've been at big birthday places (like jump houses, bowling, etc). Because all of the kids get bored sitting and watching for so long, we take turns during the party getting one child and the birthday child together. The guest gives their gift to the birthday child, watches him open it, we thank them, take a picture and then return to the party. We keep doing this every 10 minutes or so until all of the presents have been opened. This helped our son not get too bored opening and he got to appreciate each gift and really know who it was from.
We started this at his 4 year old party. For younger children, this may not work as well.
Hope this helps!