I think part of the problem regarding compounding stress is that all stress sources add to the same stress total, especially once your fortress starts getting mature (10+ years, with various beasts and sieges).
For example (I'm going to make up numbers for simplicity's sake), say that getting rained on for an average dwarf, Urist, adds +100 stress. Urist then goes on to not have any good food for a while, adding +100 stress. Urist now has a stress level of 200. After some time without becoming more stressed out, Urist's stress drops by, say, 10 per day. Therefore, after 20 days, Urist is back to their base level of 0. This is, if I'm not mistaken, how stress currently works. Of course, we're ignoring that dwarf's personality, but we'll get to that.
Now, we're going to break up the sources of stress. We still have the total level of stress, but now it's a summation of the other stress levels, and every stress "pool" drains (and fills!) independently of one another. Using our example: Let's assume that Urist hasn't begun to de-stress yet. While the total level of Urist's stress is 200, it is composed of 2 values, 100 (Stress from rain) & 100 (Stress from bad diet). Suddenly, they have a meal with their favorite ingredient. Hurrah! This doesn't make Urist instantly de-stress, but it does allow them to quickly de-stress at a rate of 50 per day. Now, after 2 days, Urist's stress level is at 80 (50 per day for diet stress, 10 per day for rain stress). Then, after becoming totally de-stressed in regards to their diet, Urist de-stresses at the normal rate of 10 per day for their rain stress, taking
Now, this is grossly simplified, but I think it is something to consider when deciding on how to balance stress. Again, this is all assuming that stress is currently just a sum.