From your question, was not sure if you have already looked at the option of prefetching to save some over-head. According to Core Data Documentation, here is a code snippet for prefetching.
NSManagedObjectContext *context = /* get the context */;
NSEntityDescription *employeeEntity = [NSEntityDescription
entityForName:@"Employee" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:employeeEntity];
[request setRelationshipKeyPathsForPrefetching:
[NSArray arrayWithObject:@"department"]];
The code fetches employee and department information, but what I was not sure was if Department is in a different data model, can it be put to use using something like a NSPersistentStoreCoordinator.
One other note from Apple's Core Data preformance recommendation is
Each round trip to the persistent store (each fetch) incurs an overhead, both in accessing the store and in merging the returned objects into the persistence stack. You should avoid executing multiple requests if you can instead combine them into a single request that will return all the objects you require. You can also minimize the number of objects you have in memory.
So if ideally if you can merge two different Core Data models, that is going to save memory and round-trips to fetch data.