Indeed you need to add a sleep command between the bring up command for wlan0 and udhcpc : required time to update the system files.
But I think that 30'' is too big. You believe that it is the right value because udhcpc has a default wait between two attempts :
So 20''-A,--tryagain N Wait N seconds after failure (default 20)
For example, if you set a sleep of 3" and I assume that the bring-up doesn't yet end to update the system files, udhcpc will fail to get an IP. Then it will wait until 20" to try again.
So 3" + udchcp first try + 20" => ~25"
So increase the sleep time with a small step and I am pretty sure that you get a smaller value than 30"