pub fn servers(blocks: Vec<BlockContext<Chain>>) -> Result<(Servers, Lifecycle)>
Group Server Blocks by Listener and collect their hooks in block order. The caller runs Startup before serving and Shutdown before Listeners drain.