I'm not sure I have any advice, but I have loads of sympathy. I spent the first 2 years of dd2's life playing bodyguard. Her sister (20 months older) would do a lot of what you described. Not much could get done in the house unless both dh and I were home. I literally could not turn my back and I spent most of the time just placing myself in between them. Giving dd1 attention did help, though it didn't solve the problem. Only time did. (But to this day she still blames every bad thing on her, even though she rarely pushes or hits. Also, our troubles didn't extend beyond the home. We didn't do preschool, though.)
If I could hazard some advice, I would say to put everything down and give yourself entirely to this problem. If your dh is so stressed out about this he's talking about spanking, I think everyone needs to focus on this, even if it means getting behind on housework and other things. Keep the TV off in the evening and don't turn it on until after they go to sleep (that's more to keep the adults focused!) Stay off the computer for the same reasons. Play tag team when dh is home so that the two are never left alone, even 6 feet away and in sight (first hand experience with that one!) Do you have trouble when you are nursing? DD1 used to smack dd2's head. I ended up nursing in a deep chair with wide arms that kept her at arms distance and she couldn't do much harm. That's if you can't convince him to curl up with you to read a book or watch his favorite video together. (I also had to give up on trying to get dd2 down for a nap at 14 months because dd1 would hit and scream and dd2 was hard to get down anyway. Bad combination! I just gave up.)
Fair or not, your son needs this extra attention, even if you are just playing bodyguard. I think it diffused our situation a bit. Sure, he "should" learn to control his impulses, talk about his feelings, listen to your point of view etc etc, but he's not even 4 and sometimes it's just like talking to a brick wall. Not saying you shouldn't try, but don't expect him to follow through with what is expected of him. Get between them. Don't turn your back. Find some time just for him. Eventually.... eventually! If you go about this the right way and don't lose your temper, eventually he'll back down. Mostly. Hopefully he'll find some resolution at preschool. How often does he go? Does he generally enjoy going, or does he protest? Does he make friends? Are you a SAHM, or do you work?
Don't give up on the special time, even if he goes back to his ways right after. You just can't expect a kid his age to view things that logically and respond that quickly. Those special times will make a difference. Make this your #1 priority. Hopefully your dh can be on board and can tolerate a little messiness around the house if that's what it comes down to. Eventually......
I guess I did have some advice.