Yes you can transform the message after the request/reply over JMS,
to JMS (request/reply)
When the route ends, the result is what is returned to the caller of foo.
When Camel creates an Exchange (eg when a new message is received into Camel) it stores the from endpoint uri as its creator. So you can use that to detect which endpoint created it.
That is tough. You would need something a like a JDBC spy driver, which is a JDBC driver wrapper, which intercepts on the JDBC driver level. You would need something alike that for proxying JDBC. Camel does not offer something like that out of the box.
For the transports which naturally supports this is feasible, such as all TCP / HTTP based transports. Likewise for JMS you can use Camel to bridge two different JMS brokers etc. An example where this is harder is that JDBC example beforehand.
I would assume having woodstock on the classpath would allow Camel to transform XML using the XSLT component. There is no specific camel-woodstock component.