The proper solution is probably situational. You can put all of them into a record. For example, in this game, I defined my main game type as:
type Game
= IntroPhase IntroState
| TowerPlacementPhase PlacementState
| AttackPhase GameState
| Victory GameState
| Defeat GameState
IntroState, PlacementState, and GameState are all aliases for different records.
Depending on how the values group, you may want to make two records or even one record and one independent value. Consider this type:
type PersistableUser
= Persisted Id User
| Persisted User
User is an alias for a record.