Here's a patch that fixes the test.
The basic idea is that retrying on a BadVersionException won't help the ManagedIndexSchema, since the version will always be past our version. Instead, we just throw an exception that can be caught by the callers and retried. I only put the retry logic in FieldResource for now, but there's a few more places where it should go if we like this approach.
I originally thought of doing the retry logic inside of ManagedIndexSchema, so we wouldn't need to put it in as many places, but that seemed not as clean, since the older schema would be getting the newer schema (presumably from the core), which seems wrong since a schema should exist independently of a core.