Close all cached sessions concurrently and reject future creation.
Each server's exit_stack.aclose() runs with a 5 second timeout so
one slow stdio server cannot stall shutdown. Per-server failures
are logged — teardown is best-effort — but CancelledError is
re-raised so the enclosing asyncio.gather still cancels peers.