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;
Code:
<tx:annotation-driven />
<tx:jta-transaction-manager />
<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" />
Then in my web.xml I configured the OpenEntityManagerInViewFilter as normal with reference to the id from the JNDI look up as above;
Code:
<filter>
<filter-name>openEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
<init-param>
<param-name>entityManagerFactoryBeanName</param-name>
<param-value>onePU</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>openEntityManagerInViewFilter</filter-name>
<url-pattern>/one/*</url-pattern>
</filter-mapping>
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.