Well (anyone can correct if i am wrong) from my point of view you are killing the page performance by using custom user controls in many places because they cannot create asynchronous callbacks altogether. You might incorporate an updatepanel but that will probably make things even worse. I think for code reusage asp.net is not the perfect solution. You can either have a reusable web service that you call or simply copy past portions of jquery or javascript.Haven't given much attention to that part though and i may be wrong.
Also if you have a user control that fails in some way, your whole page using it may go down. Had that lovable experience with yahoo, given a 404 on a custom control and the page failed with error 500. Had to go through the server logs for hours to find out what the heck was going on.
So to answer your questions. The master page approach (even if i don't like master pages because they kinda hide the proper html page) is what you need. Forget writefile , it's for special assignments, just drop it. Custom user controls, as i've said, i try to avoid it as much as possible.Load times are slower, security i don't know, you have the login control so no need to re-invent the wheel,maintainability as any self created .net control.
Again anyone can comment or correct me.