Good news (and not so good news)... After more experimentation I've found I can actually successfully register a custom libxml2 XPath extension to an existing function - which means I could in fact implement a new
number(x,default) function (as well as ODK's
round(number,places) Yay!) iff I first explicitly de-register the pre-existing native XPath function of the same name!
The bad news: you've basically 'lost' the original native function, so your new custom function must re-implement all the existing functionality of the original, plus whatever new function you've added. Sigh. Oh well, at least its possible.
That still leaves open my question whether such changes to existing XPath functions, in the same namespace, are legit spec-wise...?