Hej Nils
Jeg ved ikke om det er det du mener, men der findes/fandtes noget der hedder CSS Adapters som netop var et projekt, der skulle gøre at nogle af ASP.Net standard kontrollerne, udskrev mere venlig html. Du kan læse mere her: http://www.asp.net/CssAdapters/
Men der er også en række andre ting man kan gøre for at få sin html mere clean. F.eks. i det eksempel du nævner bruges en label-kontrol, hvis man istedet bruger literal undgår man ekstra markup. Hvilket betyder i dit tilfælde betyder at span tagget helt forsvinder.
Til de kontroller hvor man bliver nødt til at havde et id, kan man godt blive lidt irriteret over ASP.Net uskønne måde, at genere client id'er på. Det kan man heldigvis nemt komme udenom ved at overskrive naming containeren, og selv tage ansvaret at de enkelte kontroller's client id'er er unikke.
Mht. ViewState, så skal man altid slå det fra på de kontroller der ikke bruger det, f.eks. ofte label kontrollen. Derudover kan man lægge viewstaten i hukommelsen, så den ikke fylder på siden. Læs mere her http://www.eggheadcafe.com/tutorials/aspnet/b48875f6-525b-4267-a3a8-64dd33bfc2fe/keep-viewstate-out-of-pag.aspx
Man kan gøre rigtigt meget for at cleane ASP.Nets webform markup, men hvis man vil havde den ultimative kontrol, er man nødt til at skifte til ASP.Net MVC.
PS: Kom lige til at tænke på at når man taler om at builde sine ASP.Net sider, så menes typisk en pre-kompilering af ASP.Net sider, så man undgå et performance hit, første gang siden rammes og der skal .aspx filen kompileres. Men dette forbedre ikke kvaliteten af den outputtede html.