I will try again, because it's so easy to make a mistake
Yes, you missed a step, and I possibly made some confusion, it is difficult to suggest a sequence of commands remotely, let's see if I can clear the idea with a more verbose example:
find --set-root /Windows10.vhd <- this finds the vhd and sets root to the disk/volume
root <- this confirms that the vhd is on (and you are root on) (hd0,0)
map (hd0) (hd1) <- this map the first disk to second disk
map --hook <- this hooks the mapping
find --set-root /Windows10.vhd <- this is the same of the previous one, you can omit that as - in this moment - you should have the same disk mapped as both (hd0) and (hd1) do the find command will find the .vhd on first volume it scans (hd0,0)
root <- this is the same of the previous one, you can omit that, as it will still result as (hd0,0)
map /Windows10.vhd (hd0) <- this maps the .vhd to (hd0)
map --hook <- this hooks the mapping
root (hd0,0) <- this moves the root to the just mapped (hd0), i.e. the .vhd
root <- this should have different results from the previous one as this is now the .vhd
find /Windows10.vhd <- this should result in (hd1,0)
geometry (hd0) <- this should confirm that (hd0) is now the .vhd
geometry (hd1) <- and this should confirm that the USB stick is now (hd1)
root (hd0,0)<- this is unneeded as root shoiuld be already (hd0,0) but better be sure
chainloader /bootmgr <- this chainloads the bootmanager inside current root (hd0,0), i.e. the one inside the .vhd
boot <- this passes control to the chainloaded bootmgr and boots
All the above basically is about mapping the .vhd to first disk AND keep the USB stick available at BIOS level as second disk.
If it doesn't work, try doing the opposite, i.e. leaving the USB stick as first disk and map the .vhd to second disk, i.e.:
find --set-root /Windows10.vhd <- this finds the vhd and sets root to the disk/volume
root <- this confirms that the vhd is on (and you are root on) (hd0,0)
map /Windows10.vhd (hd1) <- this maps the .vhd to (hd1)
map --hook <- this hooks the mapping
root (hd1,0) <- this moves the root to the just mapped (hd1), i.e. the .vhd
root <- this should have different results from the previous one as this is now the .vhd
find /Windows10.vhd <- this should result in (hd0,0)
geometry (hd0) <- this should confirm that (hd0) is the USB stick
geometry (hd1) <- and this should confirm that the .vhd is now (hd1)
root (hd1,0)<- this is unneeded as root shoiuld be already (hd1,0) but better be sure
chainloader /bootmgr <- this chainloads the bootmanager inside current root (hd1,0), i.e. the one inside the .vhd
boot <- this passes control to the chainloaded bootmgr and boots
Wonko