I'm so sorry for your loss. This major life change may well be affecting your son's behavior, and it's also affecting the way you react to things (such as your son saying he misses his dad).
When a child is reacting with anger, violence, destructiveness or high energy, you will find that reacting yourself with anger (yelling, spanking) just fuels it. It teaches a child that being physical and loud is okay because it's what Mommy does when she's frustrated. That's not the message you want to convey, right?
It's almost impossible to sit with a 4 year old and talk to him at moments like this - you're right, it goes in one ear and out the other. Yes, you want to redirect when you can, but the main thing is, your child needs absolute and immediate unpleasant consequences when he misbehaves. You don't have to sit and explain - you just do it. So if he throws things, he goes in his room right then and there. If you have to take his toys out of his room, fine. I left my son's special blanket and his stuffed animals, but took away the hot wheels and the legos and so on, until he could stop throwing. If he asked for them, I said they went away because he was throwing them.
If he throws it, it goes in a big basket or bucket, whatever you have. Every time, and immediately. If he dumps the puzzle & pieces in anger, then you grab as many of the big pieces as you can right then, dump them, and put them in the attic/garage/basement, right while he's watching. You say, "No we don't throw" and take the stuff away. You put him in his room even if he is screaming. 4 years old, 4 minutes time out. If he resumes when you take him out of his room, he goes right back in. You don't yell (as hard as that is!) - you say, "when you calm down and are quiet, you can come back."
Same thing with asking them to do stuff. They don't hear it the first time. A lot of kids just don't transition well from one thing to the next. So "clean up your toys" is such a huge change from what they are doing, they block it out. Sometimes a 2 minute heads-up warning or a kitchen timer can work.
Be sure, if you are asking him to do something, that it's very specific - "Clean up your room" is way too hard for little kids because it involves too many tasks and they don't know how to start. "Put your toy cars in the box" is very specific and more helpful/possible.
Kids say things out of frustration, and to get a rise out of their parents. So "I hate you" and "I don't love you" and "You're a bad mommy" and "I miss Daddy" don't always reflect what they are really feeling. All they know is, those statements make you stop disciplining them. They don't really have empathy at this age - so telling them they hurt your feelings is meaningless. This is a big reason why many early childhood experts don't make kids say "I'm sorry" - because the child isn't sorry. The kid learns that "I'm sorry" means the punishment stops and they can go back to what they are doing. So you're right that your child says this to get him out of trouble, but you're wrong that he says it because it makes you feel bad. He DOES do it because it works. So the consequence has to be something that annoys the child, and can't be talking to the child or requiring the child to talk.
So don't yell - say "We don't throw things" and put him in his room, shut the door, and walk away. What he wants most is your attention - so take that away when he misbehaves. He'll get the message. Do it every time - it won't work the first time, and we all know that. Just be consistent.
A lot of moms here will recommend "Love and Logic" and "How to Talk so Kids will Listen" - you can get these at your library for free.
Good luck and hang in there.