In the end, because the guy was actually a really good member and a great contributor to our site when he was fit and well, I came up with a novel solution. I had a quick plugin created that'd allow staff to "switch off" this member's posts. So essentially, when we recognised he was having a bad time, we'd "switch him off". He wouldn't be banned, and he'd know no different, but his new posts would only be viewable to staff while he had this status set, which generally avoided problems. I don't think he ever worked out what we did in the end, and we rarely had problems from him after this. (apart from the one time he PM'd me demanding to know why I'd contacted the devil about his posts...)