Patch with a new test that fails about 4% of the time on my Jenkins box, and a fix. The new test doesn't involve PreAnalyzedField(Type).
The issue appears to be that a schema modification request will persist the new schema to ZooKeeper, then wait up to a configurable amount of time (10 minutes by default) for all replicas to get the new schema, and then return success. A ZooKeeper watch on the coordinating core's config directory eventually triggers a core reload for the persisted schema changes, but sometimes a request sent to a different node will trigger a reload for an older schema. As a result, after returning success for a schema modification, the coordinating node will briefly host an older schema.
The attached patch triggers an immediate core reload after schema changes are successfully persisted to ZooKeeper, and once that's finished, checks that other replicas have the new schema. The patch also: forces a schema staleness check & update when the ZK watch is created for the new core's schema in ManagedIndexSchemaFactory.inform(); and removes an unnecessary schema download just prior to reloading the core in the listener created in SolrCore.getConfListener().
I beasted the new test for 500 iterations with the patch, and it did not fail. I also beasted PreAnalyzedFieldManagedSchemaCloudTest.testAdd2Fields() for 300 iterations with the patch, and it did not fail.
Precommit and all Solr tests pass with the patch; I think it's ready.
I'll commit to master and let it soak for a couple days.