However, I'm wondering if it's cleaner and possible to just add a new node to the cluster with the newer OS version and SQL version then just failover to this instead doing an upgrade?
Yes, you can do this as well. Rotate a node in, take a node out, or however you'd like. Once you fail over to SQL 2019, though, the databases will be upgraded and there is no going back to 2016.