I agree that it should be a user-controllable feature - everyone should have the right to choose what they do/don’t see and who they do or don’t interact with. (It has to be well thought out and implemented of course.)
In our current situation where possible I try to take ownership of the reason why a block is needed because, like you mentioned, I don’t want things to escalate; I would much rather someone get annoyed or angry with me than one of our users or mod team members. I have a thick skin, and have been stalked, threatened and all sorts of other things over the years - I can deal with it but I know not everyone can hence I do my best to protect everyone who’s in any of the communities I manage as much as I realistically can, even if that often means putting myself in the line of fire.
Yes, a large part of the reason Discourse has resisted stronger user-enactable block is that the need for a member to block another is fundamentally a threat to community cohesion. If the moderators can take action to resolve the tension, that’s a healthier outcome than quiet simmering.
The ‘ignore’ feature was implemented due to a dispute that originated entirely outside the forum, making it painful for Member A to read Member B’s posts.
Also: read-blocking would be even more of a farce on Discourse than on Twitter. Just log out and read the posts that way… or have an accomplice, or alternate account, send the content over. And, if someone is willing to go that far to read posts on a private (login required) forum, the moderators already needed to be involved yesterday.