We had a similar problem, but not specifically dealing with the cache.
We chose the second option mentioned here http://www.jboss.org/community/wiki/useJBossWebClassLoaderinJBoss5
Also, you might want to make sure you don't have duplicate classes in different jars/wars/ears.
I haven't tried to access the cache via the MBean service, but it shouldn't be too difficult using the standard jmx api's: http://java.sun.com/j2se/1.5.0/docs/api/javax/management/package-summary.html
I think you can also get the jmx interfaces via the InitialiContext::lookup(...) route.
From what I remember, though the older versions of the cache mbeans were more useful than what are there now.
Have you tried using CacheManagerImpl?
There is a getCache( String, boolean ) which might be useful.