u-boot has a built-in device tree for the device that it passes to Linux. It also supports a fixed search path based on upstream device tree name that acts as an override. u-boot will automatically search for the override device tree and pass it to Linux. This is the facility that our wiring tool uses. It takes the base tree provided during boot and then merges overlays on top.
As for the USB boot issue, we have replicated it and are looking into it. It has to do with USB probing and stabilization during boot.