When Retries was first added it was pretty clear it was a weird mix of mode and state which is why it was left with its weird name.
Well now is the time to correct that. This diff splits the two properties in to separate entities and factors things accordingly.
I have added KnownExecutionState as a wrapper/container for snapshotting RetryState since a subsequent diff will add the dynamic output resolution state next to it.