If you plan to use a loop + Case Structure, why not go just a tiny bit further and make it a State Machine. This will allow you in the future to add more features (if needed) and not that much extra work to implement. I would also suggest using a TypeDef Enum control to select which state (Case) to run. You can even implement an Idle State if it should not do anything.
You could also implement your sub-vi's to accept parameters such that they can be re-used simply by passing different values. This would apply for functions that do similar things, of course.
The elegance does not necessarily mean more complex or a lot more work.. 😉