It would be desirable to have a single implementation of the core parser functions (in includes/parser/CoreParserFunctions.php) that can be used by both the legacy parser and Parsoid. This shouldn't be *too* hard: most are simple text-in/text-out functions, so a wrapper which massaged the input arguments (converted from Text node or Tokens to a flat string), called the implementation function, and then converted the output from a string into a Text Node should probably be sufficient to provide for Parsoid compatibility.
The bigger issue is registration: moving from "call this hook every time you create a Parser object and it will register all the core parser functions one by one" to "maintain a global registry of registered parser functions" is T299528. We probably need to explicitly include a "skip this registration and look further in the registry for another" return value in the parser function API to allow migration of extensions which might (for some reason) deliberately choose to register a particular parser function *only* in a specific context -- in the new world order they would *always* register the parser function, but it would return the "skip this registration" value in all cases that are not the specific context in which it should be active.