loader: rewrite zfs vdev initialization
In some cases the pool discovery will get stuck in infinite loop while setting up the vdev children.
To fix, we split the vdev setup into two parts, first we create vdevs based on configuration we do get from pool label, then, we process pool config from MOS and update the pool config if needed.
Testing done: confirm previously hung loader is not hung any more.
FreeBSD issue: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=241118