I would suggest to check the following question: Input field - Select multiple items from a very large lisInput field - Select multiple items from a very large list
It does look like tree/tree table (2), Miller columns (5) and optionally single list solution with navigation based on bread-crumbs (6) might solve the problem you have.