Visual Web part basically does the same as solution 1, as it loads a user control in CreateChildControls (the exception is a Sandboxed visual web part, where the codebehind for the usercontrol inherits from webpart).

Since user controls doesnt show up in CONTROLTEMPLATES: did you remember to set the added user controls as DeploymentType: TemplateFile?