You're correct that your son "should" have more empathy at this age, certainly not in all situations, but these are basic and easily comprehensible by a 3.5 year old, especially maternal distress.
Recent developments in research cast doubt on early conceptions of young children as primarily egocentric and incurring of others’ needs. Studies reviewed indicate a broad range of social competencies children bring to their interpersonal relationships. As early as 2 years of age, they show (a) the cognitive capacity to interpret, in simple ways, the physical and psychological states of others, (b) the emotional capacity to experience, affectively, the state of others, and (c) the behavioral repertoire that permits the possibility of attempts to alleviate discomfort in others.
Interestingly, many researchers differentiate between empathy (an affective response, i.e. feeling some measure of what the other person is feeling), sympathy (understanding but not necessarily feeling someone else’s emotional state), and personal distress (the aversion one feels - e.g. anxiety or discomfort - on understanding another’s feelings). In this model, personal distress from empathetic overarousal leads one to a self- rather than to an other- (or moral) orientation.
Some researchers found a link between aggressive behavior and empathetic overarousal. The reading is interesting. Did you perhaps notice more responsiveness earlier that has let off somewhat? Overarousal may be an issue here.
What can you do?
You can wait and see. Time takes care of so many parenting concerns, it's amazing that we spent as much energy worrying as we have in retrospect. This is one option.
Personally, I would work on it. From the studies I looked at, empathy, even at 4 years, is a positive predictor of problems at 6 and 8 years, and those, in turn... etc.
As your own link suggested, a child's ability to relate emotionally depends to some degree on him emotional vocabulary. There are age-appropriate lists of feeling words available on the internet. Use these words often, whenever they apply. If you see a child fall and cry, identify what that child might be feeling - hurt, sad; if you or your child is feeling something, help him put it into words and reward him with praise when he works it out correctly. ("That's right! you saw that she is sad." "That's right, he looks angry. Do you ever feel angry? I do, too.") If he responds with a sympathetic act, reward his choice of behaviors. Helping around the house when you are busy, helping to prepare a meal, helping to soothe someone or something (a dog? - they're good for the microbiome as well!) are all praise-worthy behaviors.
Read stories where the character experiences both positive and negative emotions, and point your son to/ask your son to identify the emotions. Keep it a bit lighter if you see that he is feeling too sad. (My son so upset with me and the book when Boxer died in Animal Farm that he started to cry and stormed out of the room. Oops... I didn't see that one coming. He was old enough to understand that it was a metaphor for communism, but the injustice was just too much.)
You mentioned that he has a stuffed puppy. You can make the puppy a character in imaginary adventures and let him soothe the puppy, or celebrate/laugh with, be sad with/for as well (or, at least, praise his actions when he makes attempts in those directions.) This should help him when these situations come up spontaneously in family members and friends.
The investment is important. Studies have linked even academics to emotional knowledge.
Take heart, though. It is never too late to improve empathy in children, as the Canadian school program Roots of Empathy shows. They have turned older children around and changed lives.
Edited to add: I didn't address an important part of your question. Hitting/biting/causing pain should never be tolerated, and should have immediate consequences (I know you favor reason, but that behavior is clearly not reasonable). As to his laughter afterwards, for now I would (completely) ignore it (thought it would hurt my feelings, too), as if it weren't happening. If it doesn't change in time, I'd address it more directly.
Just a story: My eldest thought head butting was hilarious at about 30 months. No amount of kind words and explanations made any difference - until he broke my nose. Luckily at first, I was in too much pain to cry out or say anything. Then the tears (involuntary) and the blood began to flow. I said, very matter-of-factly, "Look! You broke Mommy's nose" and waited a minute before getting something to sop up the blood. I wasn't angry. I wasn't upset. I just let him witness calmly the cause and effect. He doesn't remember it, but at least the head butting stopped!
The origins of empathic concern
Handbook of Moral Development Chap. 9 <- Interesting read
Emotion Knowledge as a Predictor of Social Behavior and Academic Competence in Children at Risk
Google scholar keywords: empathy, child, prosocial, social competence, emotional knowledge