This sounds like a good work around. Can you confirm your workflow?
-You publish the populated layer as a vector tile,
-create a separate layer using the same symbology but pointing to an empty dataset (or maybe just set a definition query that removes all the data)
-and publish that image service at a single zoom level (the reference scale set for the symbols/labels)?
-Then you can use that image layer to generate the legend without slowing down performance?