No, it's not fair to punish a player in this way. But it's not okay for this player to take an unfair share of control over the game, either.
You are the DM — you are in control. You are in the Big Chair, and the group put you there to be responsible for pacing and mediation. You have that job because players striving for the benefit of their PC is fun but usually incompatible with players having responsibility for fair pacing of action. You don't need to resort to retributive actions like that. You need to exercise that pacing authority instead.
Don't punish — be proactively assertive
Punishing a player like this only makes "sense" if you're not in control of the game world and play pacing, but to be able to punish a player in-game requires being in control. See the contradiction? No control — in control.
Instead of letting the player take control, and then punishing them for taking it, reassert that they don't get to inject things whenever they want.
Player: I throw it at the wall... Ack! I rolled a one!
GM: You hear a cracking sound—
Player: I roll out of the way!
GM: Hang on there Speedy, I'm not done. Ahem. You hear a cracking sound, and the wall collapses onto you. Roll an Escape Save† to see how well or badly you're hit by falling masonry.
Player: But I said I got out of the way!
GM: Being good at interrupting me when I'm talking doesn't magically make your character faster in the game world. Make the roll.
† I just made that up. I'm not assuming exactly how your homebrew would work here — maybe they'd just take damage directly, or maybe something else might happen like using luck points or something — but I'm making this up for the sake of the example's narrative flow. Adjust it as you read to fit your actual game rules.
See how that works? Be confident, don't let the interruption startle you, and do not accept the contribution that is made inappropriately. In short, do not allow "instant actioning." It's rude, privileges people who are good at talking fast and startlingly, encourages being rude to get an unfair advantage compared to the other players, and adds things to the unfolding story that make no sense in-world. Just don't permit it.
When a player attempts to take control over the narrative, just ignore it. Void it, veto it, undo it — however you want to think about it, just do not dignify it by accepting and incorporating it into the "Shared Imaginary Space" — the shared and agreed on story of what is actually happening with these characters. Don't let one interrupting player take inappropriate priority over what's happening.
Remind yourself that nothing passes that doesn't gain acceptance. Remember that the other players are looking to you as the example for what is accepted, moment to moment, so you do have this authority, even if it's uncomfortable to feel like you have that much say over the narrative. Being the GM is also about leadership, and leading by example.
Calmly, and confidently, disregard the interruption and continue as if it didn't happen in the game — because it didn't yet.
Moving forward
Normally I would suggest retconning the situation, but I won't here because your player took the PC's death well. That shows me that you and your group have an high degree of mutual trust. That means that rolling back and redoing this isn't really necessary to patch things up — there's no unmet need that would justify the significant disruption a retcon can cause.
What I would do here, is talk about "instant actioning" at the beginning of the next session. Say that it's become a problem, and you don't like how you dealt with it last time. Thank the player for being such a good sport, and apologise that how you handled it lead to their character's death. Then just let the group know that, to deal with the unwanted phenomenon of instant actioning, you're no longer going to allow "talking faster than me" to interrupt what's happening in game. Since habits are hard to break, tell them that it's OK if they forget and try an instant action, and that you'll just calmly ask them to hold on until you're done.
In response to your sectionals:
Do NOT repeat things for them. If they miss it, they miss it, they have earned no special treatment - do not offer them any.
As much as I personally dislike it, a time limit (say 1 min) for each player, each turn may be in order. (the time limit is only on committing to an action, not actually finishing it ... ie large meteor swarm could take a while to resolve)
- Losing a sense of cohesion:
If their characters are no longer fulfilling a prerequisite for something, then their characters should suffer some penalty or issue. This is an item for the DM to discuss with them. Although it could lead to booting the characters (not players) from the party, it could lead to new character creation .. or even player dismissal ... although this isn't necessarily what I'm leading at here ;)
If the players themselves are not abiding by the rules of the table, and communicating with them has failed, I'm not sure I see any other option than to start enforcing stricter penalties on them, or asking them outright to leave. I know you didn't want to hear that, however, some people just don't "get it". shrug
You don't need to handle this behaviour, neither does the GM. Just simply point out . "Hey, it was your choice ... live with YOUR choices". These hard heads need to grow up .. short and simple. :)
Best Answer
You say "Before he or any of the others had a chance to pick it up, the controlling player snatched it up and refused to give it back (Even though she had no use for it)." I feel like I can identify 2 problems from this sentence.
First of all, how are you allowing her to pick it up without anyone else being allowed an "action"? Just because a player says they want to do something does not mean you have to resolve the action right away. For example, if she says "I rush to go and pick up the mask.", you could say, "Alright, while you try to do that, what is everyone else doing?" This way, you can manage all players' actions at once, and if they conflict (such as another player also trying to grab the mask), the party or you can decide what happens next. Especially if you are concerned about quickly snatching things from the other party members, I see no reason to resolve actions in an order which benefits the fastest-speaking player most.
Second of all, a problem I identified that you didn't ask explicitly, is that you made this item specifically in mind for 1 (maybe more?) player. If your troublesome player is constantly taking items that you only want a certain player to have, it might be best to move these items as a quest reward that you can give directly. The other solution is to try and have loot that are more open-ended, so the party doesn't feel like anything they come upon just so happen to be perfect for only 1 character and no one else.
Another option (I would not recommend over-using) is to punish the player by having the item not be what they expect, eg. the bearer now is cursed and can't drop the item without outside help. As you mentioned, this can sometimes feel unethical, so I wouldn't use this too much, especially as a main solution.
Finally, although it is understandable that "she doesn't take these kinds of discussions well", if every other solution you try fails, this speech needs to happen. It is better to kick someone out and have him or her be unhappy, than have everyone else at the table unhappy.