Yes, that's the customary practice. I've turned on all the delays I know
about (timeout file, usb_pgood_delay, program_usb_boot_timeout=1,
boot_delay_ms=5000, boot_delay=5000) and none seem to make any
consistent difference. I'm guessing it's a half-bug in some of my
hardware. Sometimes the disk shows up on the second try, sometimes
the fifth or sixth. So far, it hasn't taken many more than six tries.
The most encouraging thing found so far is
http://etutorials.org/Linux+systems/embedded+linux+systems/Chapter+9.+Setting+Up+the+Bootloader/9.5+U-Boot/
but it's quite old, apparently dating back some ten years.
It rather implies one can set environment variables in config.txt,
those are tantamount to commands in the "hush" shell implemented
by u-boot. It's much less clear whether the hush shell implements
enough to parse the response to usb reset for the text "1 storage",
break out of the loop and run bootcmd_usb0.