Adrian discovered we want to use kernel versions of at least
snprintf() so the kernel format extensions are supported, as required
by ether_sprintf().  I've transplanted the remaining functions from
sys/kern/subr_prf.c to lib/libuinet/uinet_subr_prf.c.
Even though the only valid config has been to run with one defined cpu because the pcpu userland port remains to be extended to multiple defined cpus in a performant way, there is a bug in having an empty critical_enter()/critical_exit() implementation even with one cpu as preemption may still occur, breaking the critical section.

Thanks, Luigi, for thinking of this!
Fix typo
- Get rid of preprocessor override of kernel malloc API names.  This
  is no longer necessary with the UHI approach, and creates problems
  when incorporating other kernel code that uses the preprocessor to
  override malloc names (e.g., libalias).

- arc4random() reimplementation should be in UHI, so now it is.

- Objects calling into host OS APIs should not be part of the prelink
  stage when building libuinet, as this risks resolving host API names
  using libuinet kernel names.  The host objects are now linked into
  the library after the prelink/symbol hiding step is complete.
Properly fence off incomplete ICMP plumbing for promiscuous INET
interfaces that are not in fib 0.