Here are some issues I can think of (other than those you already mentioned like supplying unique contexts), off the top of my head:
1) You will have to ascertain that the JNDI names for your EJBs (and anything else that needs JNDI names, such as the data source) are unique between the apps. This should not be an issue for the EJBs if you go with the default jndi naming convention of ear-name/ejb-name/local (or ../remote)
[Note that this item has the built-in assumption that you will have to rename the EAR file for each app...]
2) Each app will have to adjust how it looks up EJBs to use up the correct "ear-name" section of the JNDI name. This could be done via a properties file.
3) You will have to configure a loader repository for each app - this will keep the classloaders separate and ensure proper scoping of the classes (each ear gets its own copy of the classes)
4) You will need a *-ds.xml file for each app, each with its own custom JNDI name and the app will have to be configured to use the new name. Given that you are using Seam, I am not sure if there are mechanisms to programmatically alter the Hibernate/JPA configuration or if you will have to modify the persistence.xml file before deploying. (If you use Ant to deploy, you could modify the persistence.xml file at deploy time. Considering that you already have to modify the application.xml file to supply a unique context, this might not be all that big of a hardship.)
Those are the things I can think of. But it is usually the unforeseen issues that end up getting to you.