From the top of my head and without tracing all the usages through oak-core I think this should be doable. There are some places where the child node count is used for optimising common cases (e.g. 0 and 1 children, equality test) but I think these could be easily adapted to cope with the unknown case.
Would it be possible to provide the child node count by best effort only? I.e. for small child node lists?
For the respective JCR methods, the child node count does not work anyway since access control information needs to be considered.
Also, instead of returning -1, why not just leave the :childNodeCount property entirely away from the returned JSON?
Finally, there is also MicroKernel.getChildNodeCount. Should this method stay to "force" counting the child nodes, should we remove it, or should its semantic change along the line of the :childNodeCount property?