As this is a Player issue directly, the best thing would be to address this at the Player level. You want to talk to the Player out of game, away from the game, and make sure they are clear with your expectations of how everyone should behave at your table.
Frustration about other players goofing off is one thing, and the DM can work to help keep everyone focused. But yelling crosses a line, and is a problem that will cause bigger issues amongst the group later on.
Now, you did the right thing to talk to them about this before. Being a DM in this situation is one of the toughest elements of the role. All of your planning usually involves the game and everything inside of it. Interacting with players and trying to get different personalities together and make a fun experience for everyone is the true challenge.
The main thing to do now, is to sit back and wait. If you have already talked to the player and they showed remorse, you have to trust them to change their own behavior. At this point, trying to implement new elements into the game to address future outbursts will only serve to make the player feel punished more.
Although it might seem tempting to keep the game going when a player is reacting negatively to other players' styles or personalities, this has a high chance of causing much worse and widespread problems later. Trying to offer behavioral training in game, such as applying penalties to their rolls, making consequences in your overall story or in individual encounters, usually will not have the result you wanted in the first place. When you try to punish players in game through their characters, you're going to alienate the problem player, and show your good players that the same can happen to them if they behave in a way you don't like.
The very best thing is to separate the game from the Player, and talk about their behavior directly, also showing them that you're not comfortable with this. This will help to remove all other factors of the game away from your discussion, and help to highlight the exact problems the player needs to be aware of. If the player does act out again, the best thing is to find a way to excuse or remove that player from the game completely.
That may seem like a drastic move, but you have yourself, and the rest of your players to think about. You have already confronted the player about this behavior, and if it is allowed to continue, you're going to have other players leave, try to confront the problem player themselves, or worse, cause you to stop playing.
The closest situation I've had was a former couple who was going through relationship problems out of game, bringing some of those problems to the table and the group. After seeing it was effecting the whole group, and asked them to resolve it away from game. One of them didn't, and I eventually asked him in between sessions to not come back. It was tough, and he wasn't happy about it. But doing it this way kept that tension and stress from the other players, and when it came to session time, the rest of the group was able to immediately play and get into the game. Eventually I asked for feedback, my players were happy with how I handled it.
I can't guarantee it will go as smoothly. But after taking every step you have so far, you'll be happy to have tried.