You may use sessions here, set the session id for each message. Later on when you browse the DeadLetter, pick the message and its sessionID, open a session using the sessionID and receive on the message.
Update: The DeadLetter queue, being a special queue, doesnt allow sessions and one cannot receive a message from DeadLetter queue using sequenceNumber as well, those are the two options i found if you want to cherry pick a message.
So here is what one shall do in the cases described in question , Take all the messages from DeadLetter, Replay certain messages to original queue for reprocessing, move the rest of the messages to another queue (ErrorQueue) and clear the dead letter queue. I think this will be more appropriate as DeadLetter queue is more of an internal queue for ServicBus to handle errors/expiry. If application needs to deal with the error , moving those to app specific queue will give more flexibility and not to over load the system queue (DeadLetter Queue)