So, I revisited this problem recently because we really need to get upgraded off of CF9 and finally had a breakthrough with this problem.
I'm posting my solution here if anyone else comes across this problem. I was on the right track back in April 2016, but there were a few things that needed to be done differently to make it work.
First, I do have to use the alternate data source factory on the JNDI resources "org.apache.tomcat.jdbc.pool.DataSourceFactory". However, when using this DataSource factory, for some reason it only finds the Informix JDBC driver if it is in Tomcat's lib directory. No idea why the default one can find it with it being added to the Class path in CF and this one can't but that's the way it is apparently lol.
Second, once that is done there is another attribute I found reading through apache's tomcat documentation. alternateUsernameAllowed="true", This setting allows per query authentication. I really hate that the software I work on authenticates this way, but it does, and using this setting allows it to continue to do so without having to change thousands of queries and configure and entirely new user management system right now.
Finally, I discovered that after doing this, I have access to the defaultTransactionIsolation, however, a READ_UNCOMMITTED in a production environment is bad and it doesn't support READ_LASTCOMMITTED, what we really need. But then I also discovered configuring the datasource in this manner fixes the problems I was having with Informix's environment variable IFX_ISOLATION_LEVEL being ignored. So I'm able to set the isolation level to last committed in the URL now. Since this datasource is managed by Tomcat instead of Coldfusion, I can only assume that Coldfusion has been the culpret responsible for breaking the URL environment variable all this time. This environment variable does require an explicit connection to the database, which we have the URL configured to do, but Coldfusion must be changing the URL in some way behind the scenes that breaks that explicit connection and causes the variable to be ignored. I say this because other variables that don't require an explicit database connection do work when configured under Coldfusion (like IFX_LOCK_MODE_WAIT).
All said and done this is an example of the resource in my Context.xml:
<Resource name="jdbc/dbName" global="globalName" auth="Container" type="javax.sql.DataSource"
I saw some guides talking about configuring a web resource in web.xml as well, but I did not find that step necessary.
Anyway, hopefully this might save someone else the headache of figuring this out someday!