Rewrite the exchange allocator to work without an active scheduler. #4457