Since the limits are designed to stop people (and bots) from hammering the servers: how about something like mandatory times between posts, increasing to a limit? Say, when a [free] user posts, there's a counter set, and they can't post again for two minutes. If they post within four minutes, they have to wait another eight minutes for the next post. If they post within four minutes after that time-out, they have to wait sixteen. And so on up to, say, a two-hour window, but reset to lower limits after twice the current time-out. So if someone was at "must wait eight minutes" and didn't post within sixteen, they'd be allowed posts four minutes apart. Skip another four, and they're back to the two-minute interval.
These are top-of-my-head numbers, and I don't know if the approach is practical from a technical viewpoint, but this might prevent attacks without affecting legitimate use very much.