Remember that, for this project, any solution that works is a good solution.
There are quite a few ways of doing this part. Any way that works is good enough. The way that you did it is about as direct an implementation of the logic specification as you can get, which is perfectly acceptable. It can be done a bit more elegantly (depending on your definition of elegance). For instance, it can be done with just a single Mux16 and a bit of glue logic. It can be done in a more self-documenting way using a Mux4Way16. But none of that is needed and your way is just fine.