I don't think a retained fragment will achieve what you want here. It can help with handling configuration changes, but not between activities.
You probably should break your problem into 2 problems, one is where to start the network call, and other is receiving the response.
For the first problem, you can start the network call in the Activity/Fragment normally. If you're going to do this a lot though, you'll probably want to manage the calls in a Service and use some sort of queue.
To receive the response, you should just make sure your listener (Callback or Subscriber) isn't tied to your Activity/Fragment instance (using static for nested classes, or top-level classes). You can then forward the result to the Activity using a broadcast or EventBus/Otto.
This can be either handled in you Callback/Subscriber, or inside Service context. (Though if you want to use Broadcast inside Activity, you should reference Context.getApplicationContext() instead of the current Activity context, in case your Activity is destroyed)
Doing this your network calls should resume normally without errors, even when the Activity that requested them is stopped.
The final step would be to cache the response, because if the Activity is stopped, then the response will go no where. Even though the network call was completed, it was wasted. You should cache these responses in some way so your Activity/Fragment can retrieve them upon recreation.
Personally I would go for Service with EventBus combination.