A few more thoughts on this. First, `akka-persistence` should completely free applications from dealing with `ActorSelection` directly to resolve potentially invalid stored sender references. Resolving sender references is anyway only needed in two channel usage scenarios (inside a processor).

1. when a processors forwards the stored sender of a replayed message to a channel: `channel forward Deliver(m, destination)` 
2. when a processor replies to a sender: `channel ! Deliver(m, sender)`

This means we can always hide resolution of actor references (via `Identify`) for replayed messages inside `Channel` and let applications only specify when they want to have a resolution. This could look like

- `channel forward Deliver(m, destination, Resolve.Sender)` and
- `channel ! Deliver(m, sender, Resolve.Destination)` (because `sender` is used as channel destination)

A resolution will only take place for replayed messages that have not been retained by the channel. This usually affects only a few messages after a crash, for example. The default is to do no resolution at all i.e. do not pass a `Resolve.*` argument to `Deliver.apply`. 

This change would also make the public `Message.replayed` method obsolete (because `Channel` s could get this information via an internal API) and we could change `Message` pattern matching to `case Message(payload, sequenceNr)`.

Processors can still determine whether they are in recovery mode (i.e. if messages are replayed) by calling `def recovering: Boolean` on `Processor`.