Right now we build a bunch of keys up front in layer compilation and pass them to dropout, but this is actually insufficient as the key will be fixed for every computation. That means we'll end up masking the same part of each layer during dropout, which is not at all correct.
Instead, we probably need to treat dropout keys as state and aggregate them during training like we do with some normalization stats