Hi,
16.2 and 21.1 (specifically) have many common features, and as already explained by the other replies, 16.x is for the "G1" series while 21.1/22.x is for the "G2" and latest platforms only.
For the platforms that are eligible to both version, I can understand the hesitation. The answer, for the short-term, depends really on your needs. Maturity of code is important, and 16.x has more maturity. 21.1 will surely pretend very soon to the same level of code maturity. If you don't need a specific feature from 21/22, stability should be your main concern, and 16.x seems very good in that. Also, if you have many G1 on your network, running a single EXOS release can be a significant value for your organization. I'd not rule that out.
That being said, there's a significant code architecture change between 16.x and 21/22. All the automation, Apps, linux kernel enhancements, REST API, JSONRPC... are only available in 21/22, and will only be available in that train release, because of the architectural changes.
Of course, the different release cycles will give you as well more features to come for 22.x than 16.x, and a longer support period as well.