Ваш лучший дизайн - это вариант подхода 1: у каждого предмета есть свой ряд, и вы помещаете туда всю необходимую информацию. Пока не беспокойтесь об оптимизации - у вас будет время для этого позже, когда вы увидите, как пользователи используют вашу систему и где есть узкие места.
На данный момент вы хотите проектировать для простоты программирования и четких, однозначных описаний состояния. Вы хотите таблицу основных элементов для каждого «типа» элемента, где вы храните информацию о том, что это за элемент и как его можно использовать. Затем, когда он создан (или создан), вы помещаете строку в таблицу элементов и описываете особенности этого экземпляра элемента. Когда он перемещается, вы можете обновить информацию о местоположении. Это не расточительно, потому что вы храните - раз и в нужном месте - только ту информацию, которая вам необходима для управления элементом.
Поместив правильные индексы в таблицу, вы сможете легко и быстро управлять миллионами из них.