I resolved this issue myself with some careful re-reading of the JavaDoc for the PersistenceAnnotationBeanPostProcessor.
I removed the persistenceUnits configuration items from the PersistenceAnnotationBeanPostProcessor and put a JNDI lookup for each of the persistence units as follows;
Then in my web.xml I configured the OpenEntityManagerInViewFilter as normal with reference to the id from the JNDI look up as above;
<bean id="pabpp" class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<jee:jndi-lookup id="onePU" jndi-name="persistence/onePU" />
<jee:jndi-lookup id="twoPU" jndi-name="persistence/twoPU" />
<jee:jndi-lookup id="threePU" jndi-name="persistence/threePU" />
I have now successfully got access to lazily loaded members of my persistant classes outside the transaction boundaries of my services; with JPA annotations, JTA transaction mgr from my container and multiple persistence units.
I feel this type of complex configuration ought to be documented somewhere in the Spring Docs! It has taken a lot of reading between the lines of various Spring Docs and JavaDocs and multiple chunks of code inspection and dozens of blogs read and so forth to get this far.