One answer that I haven't seen suggested is to forget the network layer and target the application data. Look for your protection in the Web Application Firewall and Spam Filtering paradigms.
This requires that you have some control over your forum software, and some ability to manipulate it (or to pay someone to do it).
Simply add code to examine the content of a post after it's submitted and before it's posted for everyone to see. If it contains strings like "LOLOL" or "GAY" or "FUCK YOU MOTHERFUCKING ADMINS", then you don't publish the post. Return a success code to the browser as if it was posted, but don't publish it for everyone to see. Drop it in the bit bucket or file it away for human verification and/or use in training future filters.
Your adversary will presumably notice this. He'll presumably notice that some messages get through, and realize that you're looking for objectionable content. He'll adjust his tactics, posting "L0L0L" and "G4Y" and "FRAG YOU GORRAM ADMINS" instead. So you'll need to adjust to that. This is where the Spam Filtering paradigm can come in handy. Bayesian filters can be used to detect things that look like this versus things that look like that without an exact lexicon. Modify your hook so that you're using bogofilter or the like as well as your keyword checks. Use the manual hooks to do initial training using the ones you catch, and set something up to TOE (Train-On-Error) for the ones you miss. Tend to it, and your filter will improve.
Grab the HTTP headers being sent. Even if he's using TOR, your adversary is probably always using the same browser. If you fingerprint it, you can improve your detection - even if he shares a browser string with 25% of your users, that means your filters can ignore 11,000 posters, helping with your accuracy.
Don't engage him other than to can his posts. If he's a bully, it won't matter much; bullies attack weakness. But if he's a troll, engaging him will feed his need for attention, make him fight longer and harder. Either way, you gain nothing by interacting with him publicly or privately.
Spam Filtering is an apt paradigm here. You cannot stop him. You can only lower the damage he causes and raise the amount of effort he's required to exert to attack you. To do so, you must invest your time or your money - and if he gets you to do that, he's won something. On the other hand, if the choice is between your time/money and your forum's viability, maybe you're willing to spend some of the former to secure some of the latter.