How to do fewer actor hops?

As long as the value is still in a separate region, yes, it's fine to pass it to a non-isolated async function, because that function cannot merge it into any other region. If it's already part of the actor's region, then no.

That's correct. The point of region-based isolation is to reason about how values stay disconnected, even across concurrent domains. (In some cases, that will require annotations.)