Good Old Session Zero
It seems pretty clear that you need to talk about what's going on with your players, and be a fair and understanding arbitrator so that everyone can enjoy the session, you especially. Proposing this can be as easy as saying, "Hey guys, I want to organize a little chat between all of us so we can all the most out of each session."
A few key points for facilitating a productive, exploratory talk between all parties involved, and also how to go about this talk when expulsion is the last possible option:
Don't be Accusatory, and Bring Balance to Each Opinion
In-game, there is a discrepancy between what your coworker wants out of his role-playing experience versus your other players. Out of game, he's a close friend of yours and works with you. Therefore, it's in your best interest to approach this in a manner that is compassionate and interested in all perspectives of the situation. Don't let your other players bully him, nor he bully anyone else.
It can be easy to gang up on a problem player, and usually, it's best to simply eject them from your party. In your situation, since this is not the optimal solution, you need to be able to facilitate an honest, open discussion between all of your players regarding his behavior.
How to Talk About His Behavior:
1) Keep the discussion exploratory, and figure out exactly what the other players want.
Your player sounds like he's interested in roleplaying but seems to be getting bored, and thus is creating situations that have dramatic resolutions. When they don't resolve in his way, he gets mad, and may think you're simply punishing him for moving the session forward. I have no idea, which is why it is imperative for you to find out why he acts out. He may act the way he does for a variety of reasons: it's up to you to see if you can reconcile the differences between your players to pull this group together.
2) Once you figure out what your players want, brainstorm ways to make those game interests meet, preferably with the players.
Ultimately, your party wants to have fun on an epic adventure. Once each player's desires are out in the open, become the arbitrator and focus on how each players' desires overlap and how everyone can get what they want. Your player may be reacting to a lack of dramatic conflict in your campaign, and thus it is your responsibility to create more interesting conflict should you want a better group dynamic.
3) Emphasize how other players feel when someone is making the gameplay experience unpleasant for others.
In my experience, very few players actually get enjoyment from making others feel bad. Most people are either unaware of their behavior (shocking), or feel bad themselves and act up to be heard. Talking about their behavior without condemnation but in frank terms helps bring reality to these players. This negative social frown should be enough to wizen up your coworker to his own habits, coupled with the feedback on how each player is going to get more of what they want out of the game.
Final Take-Aways:
We're all here to roll dice and have fun.
We're all friends (ideally).
There's no need to double-down or get serious, we're playing dice games.
Try not to piss off your co-worker/close friend, but do give him a healthy dosage of reality regarding his behavior and how it makes others feel. The more empathy you can bring to your group, the better.
Ultimately, You Cannot Control How Other People Feel, and It's Your Table
Should none of this work and your party still has irreconcilable differences with said problem player, it may be time for him to go. You're not a therapist that can work on his interpersonal issues or desires, and having an open ended discussion with your party may help him realize that whatever he's looking for at your group, he will not find.