You can do this by passing properties when creating your EntityManagerFactory. You will not be able to use injection with the @PersistenceContext, so will need to use an application manager persistence context.
In your properties you will set "javax.persistence.jtaDataSource" to the DataSource that you want to use.
i.e.
EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistence-unit", properties);
em = factory.createEntityManager();
em.joinTransaction(); // jonis the current JTA transaction.
You will only need one persistence
unit in your persistence.xml. You will probably want to store the factories in some kind of static Map keyed by the data source id.
This may not be the best solution though. You might be better off changing the persistence.xml and redeploying the application instead. So each data source (tenant?) will have their own deployed application (no code changes, as the persistence unit is the same).