The way LaunchDarkly does it is to hash the user key, along with the feature key. This way the same users aren't always included in the '10% set' for all features, but they are consistently in the 10% set for a single feature.
This also allows the decision to be made in memory, without an additional round-trip to the DB.