Aw, I feel for you. DD does the same thing, but she's 20 months old. I don't think you're being insensitive to his feelings at all and if he's okay with trade-offs sometimes, keep doing that.
Maybe he's a little young for this, but what helped me with DD was a time-out when she shrieked. If she screamed longer than a few minutes, I would say "I know you're upset but we don't cry when we don't get our way. I need you to calm down or you'll have to go in time-out, OK?" After a couple of time outs, that's all I had to do.
Your son sounds sounds like an energetic little guy who's probably going to be wicked smart.
