Да, вы можете рассчитывать на оптимизацию внутреннего кэша Cocos2D. Текстура будет загружена только один раз в CCTextureCache, и на нее будут ссылаться каждый из узлов пакета, используя подсчет ссылок.
Тем не менее, не нужно создавать пакетный узел для каждого спрайта, если я правильно читаю ваше описание. Вместо этого вам следует подумать о создании пакетного узла один раз снаружи для вашего класса CCSprite, а затем попросить спрайты (или производные FMSpaceShips) использовать этот единственный пакетный узел для рендеринга.
В некоторых случаях все еще полезно создавать несколько пакетных узлов - например, когда вы хотите, чтобы они отображались в другом zOrder (скажем, у вас есть спрайты облаков, которые всегда должны отображаться позади ваших спрайтов основного космического корабля).