It seems that Solar_Sql_Adapter won't let you open two connections and use a cache at the same time, because before each connection $_cache_key_prefix will be empty. What I discovered was the following:
1. You call a model that uses database A. It'll call fetchTableList() which will try to get the list from cache. Because $_cache_key_prefix is created only on connect(), the cache name becomes simply '/fetchTableList'.
2. Tables are fetched for the first instance and the table list is cached as '/fetchTableList'.
3. You call a second model that uses database B. (1) happens again, but this time it finds a cached table list saved as '/fetchTableList' and which corresponds to the database A tables. The list is wrong, collision happens, etc.
My quick solution was to call connect() on _getCacheKey(), so that $_cache_key_prefix will never be empty, but perhaps the cache key can be configurable instead.