One option I considered (but ultimately rejected as too complex) was as follows:
Characters start the adventure at the
maximum possible for their class (so a 3rd level Fighter would have 30 hit points plus Con bonuses).
If they took a Long Rest while injured, they would then reroll their entire hit dice. If the result was less than or equal to their
current total then their
maximum would thus be reduced to their current total (and, in effect, they wouldn't heal anything). If the result was greater than or equal to their
maximum total, then their maximum would be reduced by 1, and their current would then increase to this new maximum. And if the result was somewhere in between then both the current and maximum would change to that new result.
(The maximum would reset back to "max possible" after a "between adventures" rest - which in-game probably means taking a full week off, or something.)
So if our 3rd level Fighter has a max of 28 and a current total of 15 and takes a long rest, he'd roll 3d10. If the result was 12, he'd stay on 15 but his maximum would also become 15. If the result was 29, his maximum would instead decrease to 27, and his current total would also become 27. And if the result was 22, then both his current and maximum would become 22.
I had thought this would help with the "long rest cures everything" oddity in the game - if the total gradually reduces when characters take a long rest then they would get progressively more beaten up as they went. And, of course, by starting at "max possible" it's not disasterous for balance on average. But it does run into problems if a character is badly injured and then rolls
really badly on his hit dice during the long rest.
Ultimately, I discarded it as being too complex to be worth bothering with. But someone might like it, so here it is.
