Having built a few enterprise level HTML5 based applications, a number of the issues you discuss are easily overcome. HTML5 has local storage, such client side databases, cross session storage like server apps do, so data can be stored locally when offline and synchronized with a server when back on-line using AJAX or WebSockets. Also, as Kerrick mentioned, there are 3rd party device APIs already available such as PhoneGap, Adobe Cordova, Rhomobile, Appcelerator, and more. As for performance, I agree with you to a degree. Older phones, or tablets, have problems with CSS3 animations due to the OS' lack of, also as Kerrick mentioned, hardware acceleration support in older mobile browsers, but newer phones and tablets have no problem. As for the loading experience, you don't need "load a bunch of JavaScript" to control the loading experience, if you assume the default state to be loading, which is actually very similar to native apps.
Great article... couldn't agree more. The user is the provider of input and recipient of all output of any system. If you're not taking them into account from the start, it will take 100x the effort to fix the problem after the fact.