i tested my orginal block with 2700 visibilty states (VS): AAAAA to OCCED, using a letter for the tables, filled by using a DXF-file the VS-combo with those and as values C0 to C2699. The combo table with values I filled with 3 rows: still too slow. 5400 VS no problem when it is the only block in the drawing.
Without the combo-Lookup it works still fast.
The VisAdd.lsp works still under Acad2016, at least the Add and Set of another the Visibility State. I created two commands to easily execute them. Only what not works is: the combination of different Lookups combined with the VS in ModelSpace, it sees only the last set one.
I might be easier to program with .NET or Lisp to read the values of the lookups and then set the right VS.
You will understand the function of the block now, if you move all blocks to 0,0 and turn on the objects layer, turn off the other two.