In your example, how would the player know about the existence of the "x-rating" attribute?
If it's in the *1 files, it goes into the database. If even one of your files has an "x-rating" tag, then that becomes a database field and can be referenced in custom shuffles.
By contrast, there's no way to shuffle based on contents of the dynamic data other than contents the player already knows about. But if you don't want to lose the play_count stuff, you could instead suborn the "skipped_count" field, which is never filled in by the player. This has the advantage over "x-rating" that it can be changed with the music partitions read-only (in Hijack; there's no player UI to do so).
Peter