OS changes, in my opinion, should always be done side-by-side, never in-place. In this scenario, SQL 2016 requires Windows Server 2012R2 or better, so you'll need to view it as 2 separate, yet equally important migrations. My recommendation would be to do this in 2 phases:
1- Stand up a new server with Windows 2012R2. Odds are there will be hardware upgrades on the new server as the old server was probably built years ago. install the current version of SQL that you are using then migrate a copy of production over to it. Bang away at it and make sure the OS upgrade isn't causing any undesirable behavior. After testing is complete, migrate production to the new server (SQL 2008R2, Windows 2012R2) and let it soak in for a few weeks. If everything is good and you've addressed any issues, proceed to step 2.
2- Stand up a new server with Windows Server 2012R2 and SQL 2016, copy production DBs and test again. Be careful with compatibility mode of the DBs as anything greater than 2014 (120) will have the new cardinality estimator which can effect query performance. Once testing on 2016 is complete, then migrate production again to complete the upgrade.
This is by no means a comprehensive list of things that you need to accomplish but an abridged version that just hits the overall flow of doing an upgrade like this.
Can you do it all in one step? Sure, but then if you hit an issue, the line between the SQL upgrade (which is a pretty major version jump) and the OS upgrade may become blurred and you won't know which upgrade is giving you a headache.