Теперь из-за того что поле базового класса также сериализуется - в инспекторе появляются оба поля из базового класса и из класса компонента.
И вам же четко пишет, что у вас два поля с одинаковыми именами. Вот:
[SerializeField] private EntityScriptableObject _scriptableObject;
И вот:
public EntityScriptableObject ScriptableObject => _scriptableObject;
1. Глубина (удалённость от корня)
2. "Высота" (удалённость от листьев)
И потом отсортировать по глубине от меньшего у большему. Если глубина у двух узлов одинаковая, то добавить "высоту" по убыванию. Если и высота одинаковая - смотреть на id/имя/порядковый номер.