Go with PlanA
A really quick overview of how to do this.
1. Setup your main control, add a module definition in DNN for this control.
2. Place a dropdown list and a Placeholder Control on this user control.
3. Based on the selected index of the dropdown changing do a postback, load a control into the placeholder.
The other "controls" are all user controls, if you want them to access DNN API information, make them user controls that inherit from PortalModuleBase
Let me know if you have any questions.