Oh joy! Typical life in the Big City. Lots of ragged old

all jammed together into one big fraying mess.
What you ultimately have here is a managerial/political problem. Since the Heap is common to all webapps, each webapp is responsible for its own heap usage and there's no such thing as a per-webapp memory restriction system. The problem is compounded by the fact what
J2EE webapps don't run as processes, they run by assigning threads from a shared pool and return (we hope!) those threads back to the pool at the end of each request. Meaning that there's no central process that holds resources and thus nothing to hang monitoring/control onto.
From your description, it sounds like you probably have several sets of stakeholders behind the applications, so one of the first things you need to do is get them on board, because
somebody is going to have to pay to resolve this problem, and by rights, it should be the beneficiaries. You need to get a study commissioned to analyse the system and find where the offenders are, then get authority to remedy the situation.
Do
NOT take "If it ain't broke, don't fix it" for an answer. A) It's patently already broken. B) In software, a lot of the "breakage" comes not from rot within the application, but because the application doesn't run in isolation and cumulative changes in the application's environment will eventually break the application from the outside in. The only deadlier maxim in IT I know of is "AYHTDI" (All You Have To Do Is...).
Java is a lot more "future-proof" than most environments, but nothing lasts forever. Failing to allow for this is like welding the oil-change cap on your car in place. It means that the application's cost was not properly calculated, just like the true cost of a car is more than just what you pay the dealer (or finance company).
If you cannot spare the RAM to run a second tomcat in the same machine, see if you can find a second server somewhere. It doesn't have to be a full-powered state-of-the-art system as long as it can run Tomcat and an app or 2. Then retarget your proxying mechanism to point to this server. Since you are doing URL rewriting instead of true proxying via mod_proxy or mod_jk, there may be some application mods required to handle the new URL, though. This, however, is a tempory band-aid solution. Ultimately, you just need to get someone to cough up the resources to do a proper job of clean-up.