For those who may stumble upon this later, here's what I did.
Notes:
1. dataSource is the HikariCP DataSource you created yourself.
2. This assumes that you have a persistence.xml somewhere on the classpath, as you normally would. Spring will create the EntityManagerFactory based on the settings in persistence.xml but will use the DataSource you provided. I think you can set more properties here that will override what's in persistence.xml but I didn't do that myself.
3. Be sure to call the afterPropertiesSet() method. It's important! That method actually triggers the creation of the EntityManagerFactory, otherwise calling getNativeEntityManagerFactory will return null.
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setPersistenceUnitName("persistenceUnitName");
factoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
factoryBean.afterPropertiesSet();
factory = factoryBean.getNativeEntityManagerFactory();