With keypool=0 I see no reason to do 300 addresses and sends.
(with --enable-debug)
Before patch: real 1m10.412s user 0m49.772s sys 0m3.988s
After: real 0m11.566s user 0m3.344s sys 0m4.648s
Also added check, since I failed to understand that on startup the wallet already knows about funds by rescanning blocks newer than oldest key birthdate.