What do you mean by "all that rot"? Those are what makes GUI's powerful and relatively simple. An event can change anything anywhere in the app display without worrying about recreating state or sending a complete new copy or what-not.
Writing web apps means essentially breaking your app into the classic MVC categories. The only thing that should "recreate state" is server-side data; you use CGI for this. Everything else should be either static, or client-side-modified; you use JS+DOM+HTML for this.
Now, although I agree with you that JDH is not as "powerful" as a GUI, I find that not to be a significant limitation in my work. Instead, it forces me to think about bandwidth and workflow much more intentionally, separating out those bits which *need* to be passed from client to server (or vice-versa) and which don't. Therefore, my apps are much cleaner and network-optimized than most GUI apps, both ones I've built and others I have used.
Just my 2 cents.