I can confirm the extreme importance of rep-draw recognition. Not only because it gives your engine a significant amount of Elo, but even more so because meaningful testing in the absence of it is hardly possible.
I have been stuck in the development of uMax for a long time, because none of the improvements I tried brought it more Elo than the characters they took for implementing. And then, finally, I had a good idea how to implement rep-draw detection. After tha, retrying the ideas that I had to reject before, suddenly did show them to be stroong improvements. Often they worked 5-10 times better than before. Initially the improvements just did not show up in the score, as while uMax was slowly getting the upper hand, the opponent would at some point realize that a draw was a good deal, and all those 'slow wins' ended in rep-draws anyway.
I think there are very good reasons _not_ to implement 50-move draw awareness. If engines are reluctant to make progress in a won position, there is something else wrong with them besides not counting the moves. After all, it is just a coincidence that FIDE rules include 50-move draws. If this rule had not existed, those engines would also not be able to win their won games.
You might think that 3-fold rep recognition might save you, but often this is more like painting yourself into a corner. It moves to more and more unfavorable position with (say) its King to avoid the rep-draw, until the King is so far from the action that the position really is not won anymore.
Better to program engines such that they go for progress rather than undecisively shuffle pieces around. (By a delayed-loss bonus?
) Relying on 50-move can actually backfire: I have seen many occurences where engines, being a Pawn ahead, fail to recognize that the opponent has more than a Pawn of compensation. Faced with the 50-moves ultimatum, they then sacrifice their plus-Pawn to avoid the draw. And subsequently lose the game, as the slight edge they thought to maintain after this actually was a losing disadvantage. The fact that an engine is not able to make progress in a 'won' position is in most cases due to misevaluation: it is not as won as it imagines.
Joker does not award 50-move draws to tree nodes. It does switch to a different evaluation function (putting more ephasis on advancing Pawns) after 20 reversible moves, though, when ahead. So if its normal evaluation does not see a way to make progress in 20 moves by shuffling around pieces, it switches to 'plan B', to try if aggressive Pawn pushing helps. That avoids the 50-move trap almost always.