After messing with it for a while longer, I’ve discovered that the problem does actually happen when the raspberry pi is powered by USB, it just takes quite a bit longer for it to happen. However, after several hours of trying, I haven’t been able to get the problem to happen when the opensprinkler board is disconnected.
Dumb question… the opensprinkler board comes with four support pillars for the raspberry pi board to connect to, but there are only two holes on the raspberry pi. Could the other two support pillars be shorting something out on the back side of the raspberry pi?
I also measured the voltage before and after the F3 polyfuse (as described here: http://elinux.org/R-Pi_Troubleshooting#Troubleshooting_power_problems). The difference is around 0.1v, which is well within range according to the troubleshooting guide.
I’ve ordered another raspberry pi to try to see if that resolves the issue. We’ll see how it goes.