I second a slightly different version of the two party idea.
You say that you'll be visiting Hometown but no longer live there. Since your son is three, he probably has little friends where he lives. I would suggest holding a Birthday party for him there.
The party in Hometown can be a simple thing with a cake and a few presents for your son from your parents and a get-together for your High School friends. It should work if you do the Birthday portion at lunch and the adult party in the late afternoon or evening.
I would invite both BFF and Dan to the adult party but let each know that the other is invited. When you're getting together with former classmates, there are almost certainly going to be a few broken adolescent hearts in the past.
We will definitely have a party where we live with my son's friends.
But, we are going to be visiting my parents a few weeks before his actual birthday. My parents and my BFF actually have asked me to have a birthday party for my son because they want to help him celebrate too.
A "family" only type of party, with a cake or whatever, is a nice idea, but that's just going to be a normal day. The point of doing a party was to have some party-type games, maybe get a face painter or a balloon animal artist, etc. Do people not like to do that with their kids?
I'm getting the feeling that people don't enjoy kid's parties. If you're invited to a kid's party, wouldn't you just decline going then?
One of the high school friends asked me to let her know when I'll be in town again, so that's why I thought about inviting them to the bday party. It would be something fun to do with her kid. True, it's not like we're going to have a chance to really sit down and catch up over a hot mug of tea, but we could always do that as well, if we wanted right?
If was in their position (an old friend who lives out of town, but is coming to visit, and has invited me to a birthday party for their 3 year old), I wouldn't find it tacky or gift grabby. So that's where I'm coming from.