I'm not an expert here, but I have 3 young kids - who I have on occasion smacked on their bums or hands. However, most recently I have completely stopped and we have been smack-free for 6 months (alhamdulillah). Here's a few things to ponder:
1) Never EVER hit your kids out of your own frustration. They are too young to be your punching bag and you could potentially injure or even kill them. If you must hit your child (the only legit occasion I can think of is if your child has physically harmed someone else), make sure you are calm and are only doing it to grab his attention and not to hurt him.
2) 'If he doesn't perform well' - what a load on a 5 year old. Try to see the world from his perspective. Children WILL fail. You might beat him into being a 'topper' but he might not be able to do something else - he needs you to be his cheerleader, enthusiast, confidante, helper, advocate - and it doesn't matter if he fails or passes. You said he's bright. Give him some compassion.
3) he only listens to you because (I'm sorry for being so blunt), but that's the abuse cycle. You hit him a lot, you hurt him, he seeks your pleasure and approval constantly, and he probably sees you and your husband as opposite 'sides' so he constantly wants to be on your good one, and this rejects him.
4) 2 year olds scream - deal with it. Don't punish or sanction your son for your daughter's behavior. She is too young to remember, but he is old enough to understand.
5) you don't need counseling, you need resolve, determination, commitment - to love him no matter what.
6) let your husband and son build their own relationship. Let them play ball, build blocks, wash the car - and then get out of the way - they will establish their own unique dynamic.
7) just stop hitting him - its not his problem, it's yours.
read parenting books and websites. Some great ones on the market!