There are not so many ways to keep players subbed, that aren't fraud mechanics, i.e. mechanics, that artificially overstretch content:
1) Replayability. It's there since such games, as Civilization and Diablo 1. Each playing session is unique due to procedural generation, where "fair" RNG is involved, i.e. RNG, that isn't used for RNG-gating. Such game is similar to #2, because it's unpredictable.
2) PVP. Players like to play game, that is unpredictable, so it turns into something like meta-game - game, that is about making strategies.
3) Social interaction. Game isn't about playing it - it's about communication with other players. Unfortunately it's very niche thing, because today we have large amount of other ways to communicate. Game turns into something like "interest club", where player, who like game, can talk about it.
4) Job simulator. Opposite to #1. Thing for very specific players, who like routine and like to work towards some goal in a very long term manner, doing very small pieces of their work every day. For some reason such players hate alts. And while they actually do exactly the same things again, again and again - at the same time they hate to start doing them from scratch. Such players like grinding. I.e. doing lots of work every day. But such kind of game is casual-unfriendly. Simply because if you have IRL job - you simply don't have enough time and endurance for 2nd one.