@penn I think your set up would be the best way. If the concern with using the gallery to display everything all at once impacting the site performance is the issue, you can set up a deferred dataset . That way once the page is loaded, the content starts loading afterward.
From testing it for a second, in the settings for the masonry layout, you could add a load more button as well so that users can keep loading more items.
That’s actually not too uncommon for stores to be honest.