What if we replaced the level system with a rating system, similar to ELO in chess?
Here's how it could work: Each problem will be assigned some kind of rating (similar to number of points, now). Submitting a correct answer counts as a win; submitting an incorrect answer counts as a loss. (Yes, that means you can "lose" three times against a problem.) Wins and losses affect your rating depending on the rating of the problem: If you have a high rating, you gain almost nothing from solving low-rated problems; if you have a low rating, you gain a lot from solving high-rated problems.
Heck, this rating system could even be extended to the problems themselves! Each time the problem is solved, that counts as a kind of "loss" against it. This would make problem difficulty ratings adaptive. Of course, problems could still start with a "guess" as to their rating, again, similar to number of points, now. Sometimes the guesses will be off, and the rating system will correct for that.
Points could still be awarded as they are now--there's not really a fair way of making point awards adaptive. My proposal is aimed more at replacing the level system, not the points system.