I have some suggestions that could help regulate the current issues.

I'd change the way the karma is calculated in order to reward people who are consistently good rather than heavy posters. I suggest using the geometric mean of the post scores.

As such, you wouldn't have to give a karma penalty to comment. A weak comment would reduce the karma automatically.

I recommend the geometric mean since the scores are most likely Zipf-distributed. It could be calculated in the background as a running arithmetic mean of the logarithm of the scores, which shouldn't be too expensive.

I'd display the karma not as an absolute number, but as color-coded rectangle. The color would be based on percentile of the score described above, or perhaps as a function of this percentile. The post count (or better, the post frequency) of the user could be represented as the length of the rectangle. You could then display this "badge" next to the user name in threads. Since it would be a continuous thing, it would not divide the comunity in have and have nots as the badge system introduced and retracted earlier. In order not to discourage people from posting, users below a certain threshold (say the 50th or 60th percentile) would all have the same value displayed.

I'd also grant the various rights based on the basis of the percentile rather than based on hard numbers.

Every time a new right is granted, users should get guidelines on how to use it, i.e. don't upvote based on agreement, don't downvote unless the post is offensive/shallow.

Commenting in topics with little points could perhaps weight more than commenting in threads with a big score. This would encourage posting in less popular threads.

Downvoting should cost karma. This could be implemented as a comment with a low score. You'd keep two counts: a post count and a downvote count. The karma would be calculated based on the sum of these numbers, but the post count would still be displayed. The value of a downvote would be calculated according to the number of post, otherwise it would cost less to people with lots of comments/votes. The karma of the voter may also be taken into account.

The up and down votes should be weighted as a function of the karma of the voter. They could be implemented as a floating point number.

Removing the number of votes per post prevents to detect a highly upvoted answer to a little upvoted comment. If the votes are weighted as described above, the vote count has little meaning anyway, but the post score could still be displayed in a meaningful way by using a color-coded system similar to the one described for the karma.

I'd suggest two distinct scores

log( comment score ) / log( highest score in the thread )
log( comment score ) / log( highest score ever at the time of thread submission )

Both of these could be calculated in javascript on the client. The real score could still be extracted with a browser extension, but I don't think it matters much.

Making the first value relative to the max score at the time of voting would allow that value remains relevant as time passes, even if the community grows or shrinks. It would require to add a "max score" field to submissions, though.