What if you configure a single panel with multiple queries, each with their own legend?

Otherwise, if you have 10 different status values I think you should be able to use
recording rules to make 10 different timeseries with different labels, which is what you originally asked for.
Conventionally, when representing data this way in prometheus, you'd make each series have value 0 or 1 at each instant (so every timeseries is contiguous, and you don't have issues around staleness). I haven't tested it, but try something like:
groups:
- name: foo
rules:
- record: foo:annotated
expr: foo == bool 0
labels:
status: xxx
- record: foo:annotated
expr: foo == bool 1
- record: foo:annotated
expr: foo == bool 2
labels:
status: zzz
... etc
If you're going to do this, it may be better to modify the exporter if you can, since it will know better all the possible status values and labels.