The fundamental reason why db and compress (and perhaps other benchmarks we haven't noticed) are so touchy to small changes in the static inlining heuristics is that we are getting methods to the maximum optimization level too quickly. If we are gathering dynamic call graph data, then the adaptive system simply should not allow methods to be compiled at its maximum opt level too soon (before we have at least some coverage of the program in the dynamic call graph). Once we have some dynamic call graph data, then we'll "do the right thing" for hot call sites with much higher probability and without quite as much contorted tuning of the static inlining heuristics.
I think this is a fairly simple plumbing change. The potential down side is that we will perhaps be slightly less responsive to truly short-running programs. This is probably offset by avoiding wasting compilation effort on bad decisions.