With a salary cap, it's kind of all the same.
There are 2 ways to go, really:
1. Always stay over the cap. By this method, you use trades to turn over the roster, either by packaging contract "filler" with prospects/picks to bring back players or by trying to swap out vet "push a contender over the edge" pieces for some prospects/picks, or, since you are trying to stay over the cap anyway, you trade expirings to teams trying to get under the cap and in return you take their longer-signed players.
2. Try to get under the cap to land a big Free Agent. The only way to do this is to let some players go "for nothing."
In the end, it amounts to the same thing, which is net movement of players out and in.
So yes, we could have kept or dealt Turner, Sully, KO, etc. But, except in very rare cases, we would have had to take back equivalent contracts, and no one is giving away good picks, etc, for those guys.
So it is a bit of a misnomer to say that "KO, Turner, and Sully left for nothing" because the act of them leaving and not needing to pay them or anyone else the equivalent money allowed us to sign Hayward. So, the question becomes, if we had stayed over the cap, would you have traded KO, Turner, and Sully for Hayward?