То что Вы пытаетесь придумать на базе FS это эдакий «шардинг» файликов в папочке. Что мешает шардить данные в БД?
Да и от 20-30 запросов FS не приляжет.
я бы на вашем месте поступил проще — реализовал бы тот вариант хранения который для вас проще в реализации именно сейчас, при этом укрыв его реализацию за каким нибудь IStorageEngine. А в дальнейшем, если окажется что он подбирается к порогу производительности мигрировал на другой, который тоже реализовывал бы IStorageEngine. Благо к тому времени и статистика подберется, и требования будут понятны и, наверняка, будет время для тестирования и выбора подходящего варианта хранения. А перелить данные всегда возможность найдется, особенно если продумать систему которая бы выдавала «ключики» в заданных множествах, не пересекающихся между версиями.