Well you actually got me really hoping that I would be able to override static methods, but no such luck. Because the original method would be static, but then the extender method overriding it would be non-static, you can't call it statically. Presumably if we had static extender methods then this would be possible.
By the way, in order for the polymorphic override to work (not just compile, but actually be called) it has to be in a separate script from where the original function definition is at (see, I learn new stuff all the time).
Having to cast the pointer (read as: call the AsXXX property) every time you create a member of a derived class seems ridiculous, but for now I can't think of a better way to get around this than simply having differently named constructors. Perhaps the exporter should (for the time being) generate constructors such as "Class.CreateClass" rather than just "Class.Create". It does seem redundant, but this is probably the best we've got (for now).