Well, I think you'd probably need to properly define "unicode sane"... libxml2's internal encoding is utf8, which is pretty standard for unix libraries these days.
The public.parser.xml2 glue does auto-conversion of data passed to functions other than parse_(x|ht)ml(), as raw markup strings are supposed to be utf8 unless otherwise specified.
Now, there are compatibility and design differences between my glue and the existing xml code.
I'd gladly contribute to a bounty for a proper C XPath implementation; I often miss one in pike. It's somewhat unfortunate that libxml2 isn't unicode sane, but the penalty for munging data back and forth through an utf8 codec might not be catastrophical.
Adding another dependent library to Pike core might not be kosher (I'd presume several or most others to be -1 rather than +0), but I would not personally mind libxml2's XPath implementation if there isn't a better one around.