Yes possible. You can configure different Hazelcast instances in a single JVM with completely different/independent configurations.
There are just few classloader-static references, but they do not break the isolation.
If you are using latest distro, you can use one of these shorthands;
Hazelcast.newHazelcastInstance(new ClasspathXmlConfig("foo/bar/hazelcast1.xml"))
Hazelcast.newHazelcastInstance(new FileSystemXmlConfig("/foo/bar/hazelcast2.xml"))
Hazelcast.newHazelcastInstance(new UrlXmlConfig(url))
Hazelcast.newHazelcastInstance(new InMemoryXmlConfig(xmlString))
These also applies to your Tomcat scenario.
Hazelcast.shutdown always shuts down the 'default instance'.
HazelcastInstance always shuts down just calling instance.
If your hazelcast.jar in server classpath, Hazelcast.shutdownAll() shuts down all instances in Tomcat (JVM) (including default one),
If your hazelcast.jar in web-application classpath, Hazelcast.shutdownAll() shuts down all instances started from that web-application (including default one).