I think that's a good idea in principle, but if they're insulting everyone you don't want them to be a part of the community, and rejecting code might be your way of rejecting them from the community. I think it depends on the value of the code as well. If someone who fixed 1000 bugs probably has a little more license to be rude than someone who fixed a typo in the README.
Sure, but that makes it hard to draw a line. I feel the main point with these covenants is to give more or less incontrovertible authority to kick someone out when they violate it. Theoretically it settles a lot of counter-arguments the person might try to make. The convenant still leaves it up to the project leadership to decide whether anything happens regarding a particular reported incident.