Besides his obedience class when he was younger, what kind of classes and techniques have you used and done?
And if he's uncomfortable at family events, stop bringing him. Why does he have to go? It's obviously stressing him out and neither him or you are enjoying it. I'd just leave him home.
He's still pretty young. These problems might not be completely fixed, but they sound pretty manageable. You just need to learn the right techniques to manage your pup.
Rehoming him is just an easy out and dumping your problems on someone else. If you do decide to do it, make sure to either get a rescue (not a shelter) involved or make sure the person that does take the dog is experienced with dogs and fully aware of his issues.