Another fun add-on I've experienced in some leagues is making a certain number of roster spots necessary for "prospect" players
For example, in one league I play in, every team must carry 5 "prospect" players
prospects are players who were drafted within the last 3 drafts (2016, 2017, 2018 drafts) and have less than 50 total NHL games played prior to the season according to the rules of that league.
A guy like Cholowski is a great player to have in that sense. He started out being a good player to have in general, and still is, but even when he inevitably cools off, having him fill one of the five spots for prospects is hugely advantageous. He was a guy no one really had their eye on because Detroit is slow to work in their young guys historically, but he is in his last year of prospect eligibility in that league (2016 draft) and is playing pretty big minutes in the NHL.
Another element to that strategy is valuing high potential, high pedigree players even if they aren't in the NHL. For example, in that league I have Bouchard and Boqvist as propsects, and even though they are both playing for London in the OHL, guys are messaging me all the time asking about their availability in trades. Because they still have next season or the year after (if they don't play 50 NHL games next season) as prospects. And they are the types of D who will likely be sharing some 5v4 ice with McDavid, Draisaitl, Kane, DeBrincat, etc.
In that league we do 10 regular NHLer keepers + 5 "prospect" keepers. We could do something similar, I'm thinking something like 8 NHL regulars + 3 prospects keepers, if that is something you guys are into.