Dont pass raw pointers to backend via req.id

Use a basic tag map with header instead of passing a raw pointer to the backend via the req.id field. Validate the returned rsp.id before attempting to extract the relevant request pointer.

Also ensure that request is on submitted list before inserting onto the ring, in case a response is received before request is on the submitted list. This prevents an attempt to remove the request, that is not on the submitted list, from the submitted list.