I think it is important to open gifts in front of the giver, for a number of reasons. (1) It allows the recipient to immediately thank the giver: children (and adults) need to remember the importance of good manners and appreciation. (2) It allows the giver the thrill of seeing the recipient's joy in receiving the gift: another important thing we all need to remember is the Joy of Giving. And (3) it satisfies the curiosity of all the other kids (and adults): we all get a kick out of seeing what the other person got.
I would suggest handling your concerns (for allowing more play time etc) like this: right after the cake (clean up the plates first), announce that your son is about to open his presents, and ask if anyone wants to come and watch. The kids that are interested will crowd around, and the ones that would rather go play will do so. Probably most will come to watch, and then maybe one or two might get bored and want to leave: keeping it optional is the key, I think -- if a kid wants to go play, they ought to be allowed to. Then when the presents are all opened let the kids go play until it's time to go.
By the way, while the kids are off playing you can be gathering up the gifts so that when it's time to go you will be ready!!
And also (this is how I always did with my kids) before opening each gift, look for the tag and read aloud the person's name (or ask who gave it, if there is no tag) so that your son can immediately thank the person, and so that the other kids can know who to be excited with and who to congratulate, and so that the giver can have a moment of feeling VERY special also!!
Most kids go to a birthday party expecting that the time will be spent mostly eating cake and opening presents, and perhaps playing some games. They will all have more fun if you include everyone in the present-opening.