Player is able to be retained at value he was obtained (auction/free agency). Waiver wire and trades do not reset the contract service starting time.

Once player reaches third year of service time (S0), but before auction he must be either be signed to an extension or can just be kept at the same BY he's been at but players rights are given up at end of season.

If a player is kept, it's +5 for each year of contract to be signed. So a 4 year contract is BY+20 for every year of the contract. If player is let go prior to end of contract it's at total remaining contract divided by two. Once the contract is over the player returns to the player pool. No more rights to the player at the end of the contract.

Example:
Garrett Hampson would be 2$ for 2019 and 2020, then heading into 2021 he can be kept at the 2$ price again and then back to player pool after the season. Or he can be signed to a contract, say 3 years and then for the next 3 years (2021, 2022 and 2023) he'd be 17$.

We could easily transition to this format by cutting all current contracts off and setting their current BY's as their S2 giving everyone 2 more years at the 2019 BY value before having to sign a long term contract after that.