From a language side, much of the problems you mentioned can be solved via the provided sdk. Like the old CS saying, all computer programming problems can be fixed with adding another layer of indirection. e.g. Memory leaks can be controlled through malloc by just discarding the block after the user leaves the page.
Difference between this and javascript would be that there's little waste features like a GC that runs in the background. Overall getting C/C++ to compile has much more research and accumulated experience then Javascript. This would close the 10x gap between current native JS vs C app.
>compiling C is not necessarily all that fast. Compile time does matter for the web. I would welcome data about relative compile speeds of C and JS, though; I don't have hard data on this.
JS is now both interpreted and compiled. It is first run in interpreted mode, when the optimizer figures out which code/function should be optimized, it would compile that block, and point the execution pointer of that call to the new native code instead of running the interpreted branch. Thus compilation runs on a backend thread and time is somewhat irrelevant. Same could be done for C.
This actually brings an interesting point, why compile from source each time, huge amount of processing power is wasted from analyzing the syntax and performing the first few passes on the code. This would suck the power from a mobile device quicky. A better solution is to include an intermediary bytecode directly into the page. It would require very little translation/linking to convert into final native code.