So, I went down a bit of a google rabbit hole this morning. Not sure whether the document I found is still accurate or not, but the limit on player ages is set at the Hockey Canada level. According to the HC development policy manual I found online:
The number of sixteen (16) year olds in Major Junior, as per the regulation, may be an
average per team as opposed to the maximum per team if the league chooses. For
example, in the OHL there would be a league cap of eighty (80) in 2005/2006 or an
average of four (4) per team (20 x 4) instead of a maximum of four (4) per team. The
total number of sixteen (16) year olds does not change. This simply takes the averaging
provisions of Year Three and applies them to the first two (2) years of the CDM. The
Major Junior Leagues agree to continue tracking the sixteen (16) year olds (number of
games played, etc) and provide all relevant data to Hockey Canada for research
purposes.
This would explain why 16 yo players can be traded at the deadline. It doesn't impact the overall numbers at all. The hypothetical OTT/KIT trade could still happen prior to the season, provided that OTT agreed that it would only roster 3 16 yo players for this season.