Everything in the API is measured from internal origin (always as been). I don't understand the immediate benefits of the InternalOrigin class or the method InternalOrigin.Position. In what context would InternalOrigin.Position return something other than XYZ.Zero? Perhaps if it is a linked Revit file but that is unclear from the notes that is it's purpose.
Project system is also parallel to internal but as well as it's physical location it also has a set of parameter values for the offsets and rotation at that location. Likewise survey point in addition to it's actual location has the offsets for the location. Changing the rotation value in the project base point doesn't change the relative rotation to internal (they are always the same). It actually changes the rotation of the survey system relative to internal, which is odd but that's the world we live in (rotated around us).
You can achieve the same in previous versions of Revit you have all the information required on the base point objects via parameters (along with their actual position) to set up the transforms required. It was never impossible to convert from project to internal or survey to internal (or do the opposite) if that is the question?
As an example
The Building Coder: Project Location (typepad.com)