Each of such issues could have a different nature, and you preferably should identify such users by some other criteria, not the IP address. Specially, if you see IP addresses are blank, it probably means they are hiding them using proxies or something similar.
The most effective way is to protect posts by preventing some definite words from being posted. Usually spammers are only about their "own arsenal" of words and phrases, which are definite, and without them the message would have no sense. Install Anti-guest add-on
for that and add new words to the vocabulary.
Also, make sure you have installed the Captcha improvement mechanism
, which would make Captcha codes more unique for each day.
To that, you could make all forums for registered users only, and enable some additional routine for accounts validation using email-address verification
. This is the strongest method. I suppose, spammers may use non-existing email addresses.