Code analysis and runtime analysis using truss(8) indicate that the only privileged operations performed by ntpd are adjusting system time, and (re-)binding to privileged UDP port 123. These changes add a new mac(4) policy module, mac_ntpd(4), which grants just those privileges to any process running with uid 123.
This also adds a new user and group, ntpd:ntpd, (uid:gid 123:123), and makes them the owner of the /var/db/ntp directory, so that it can be used as a location where the non-privileged daemon can write files such as the driftfile, and any optional logfile or stats files.
Because there are so many ways to configure ntpd, the question of how to configure it to run without root privs can be a bit complex, so that is addressed separately in D16050. These changes are just what's required to grant the limited subset of privs to ntpd, and the small change to ntpd to prevent it from exiting with an error if running as non-root.
These changes were originally part of D16050, but have been split out to separate the complexity of the rc.d/ntpd changes from the basic facility for running non-privileged.