Fairness conditions are about what must happen in the limit, they do not express urgency. If you want to separate your receive and reply events and still require that the reply happens before the receiver performs some other actions, you'll want to explicitly block these actions and write, say,
Receive(p) == \E q \in Procs : \E msg \in msgs[q,p] :
/\ pendingReply[p] = None
/\ msgs' = [msgs EXCEPT ![q,p] = @ \ {msg}]
/\ pendingReply' = [pendingReply EXCEPT ![p] = msg]
/\ ...
Reply(p) ==
/\ pendingReply[p] # None
/\ msgs' = [msgs EXCEPT ![p,q] = @ \union {Answer(p, pendingReply[p])}]
/\ pendingReply' = [pendingReply EXCEPT ![p] = None]
/\ ...
and add the precondition "pendingReply[p] = None" to all actions of process p that you wish to block.
This is a simplified version of the timeout that Andrew suggested with an immediate deadline.
Stephan