RAW - Yes, catnap can affect elves
Catnap is a bit deceptively named because, despite the name and the fact that one of its effects mimics a short rest, Catnap does not actually technically put creatures to sleep. And this is not the only example of a spell/ability confusingly named.1
The important thing to realize about this is that the names of spells/abilities have no mechanical meaning. Only the spell effect description describes how the spell works.
You make a calming gesture, and up to three willing creatures [...] fall unconscious for the spell’s duration.
Nowhere in the spell does it say anything about putting creatures to sleep, it only imposes the unconscious condition on them.2
And, since elves are not immune to the unconscious condition, they are affected by the spell like anybody else is.
Rules as Intended
Jeremy Crawford has confirmed this interpretation is as intended:
Q: My group is discussing the Catnap spell; are elves unable to be
affected by it, even willingly?
A: Elves aren't immune to the unconscious condition.
Q: But they can't be put to sleep by magic. Is the effect of the
catnap spell not magic or not sleep?
A: Nowhere does the catnap spell say it puts you to sleep.
1 - A few examples: Sacred flame does not do fire damage. Chill touch does not do cold damage and is also not a touch spell. Daylight does not actually create sunlight. Detect good and evil does not actually detect alignment.
2 - Compare this to sleep which says:
This spell sends creatures into a magical slumber.
The rulings
My previous answer for this part was based on my reading on it. Crawford has talked, though.
If you spend 4 unbroken hours resting, for example, a DM could say that's one short rest.
and
After a short rest, the DM decides how much time must elapse or how much activity must occur before another short rest can start. Maybe 0 minutes, 1 minute, 10 minutes, or 1 hour. The key is that rests aren't meant to be a button you press. They're a narrative pause.
The first one would still be subject to "I can simply break the 4 hours by casting cantrips in the air for a few minutes", so it would not be 4 "unbroken" hours any more. The second statement is stronger though: it says you, oficially (i.e. not Rule 0), decide what counts as actually breaking a rest and starting another.
The World
Even if the rules don't prevent your fighter and warlock from short resting for many consecutive hours, there are lots of things preventing your scenario from happening in the adventure.
Where exactly are these characters? They can just stay still, unmoved, for three hours, and nothing happens? Why aren't they being swarmed by enemies?
That's how I usually deal (and how other DMs I've played with and have watched deal) with rests: you can take a short rest and then start moving before every enemy nearby decides to eat you. In your specific scenario (overworld, as mentioned in a comment): are they on the woods? Make a hoard of giant spiders notice them after one and a half hour. Are they in a plain field? Oh, what is that flying over there? Is it a Young Green Dragon looking for food near its lair? Make them feel uncomfortable staying still for hours in the same dangerous place.
Honestly, if they can just sit still and relax for 3 hours uninterrupted, they might as well just sleep and relax for 8 and make a long rest, then everyone, not only the fighter, is back to full health, spell slots and class features.
But this usually isn't the case. Remember, the world is alive (I've read this phrase often here, and I liked it), if they are wasting time resting every hour each 1 hour and 10 minutes, they are wasting time. Conflicts are happening and resolving and they are being left apart because they are singing around a firepit. Maybe they missed a quest. Maybe a friend has died.
The Final Word
If you really want to hard rule it, remember you are the DM. In the end, you decide everything, from how long a short rest is to how many times Second Wind can be used in a given time interval. The book is your tool, not your master. But my point is that even if you want to go RAW and RAW ends up allowing this "exploit", you can still prevent it from happening in a number of ways without any extra ruling. Solving it without hard ruling will make the players feel less frustrated (as you mentioned one player has already left because it felt unfair that he was restrained by this method) and it is actually intended, as the world is dangerous and you can't just sit and rest anywhere in a dangerous world.
Best Answer
Catnap is a shorter short rest
This is supposed to be a helpful spell not an offensive one. You use it on allies to give them the benefit of a short rest (which normally takes at least an hour) in only 10 minutes.
Short rests have many useful effects like refreshing some class features, allowing hit dice to be spent to restore HP, and ending some harmful effects. This spell would allow allies to reap these benefits in at least 1/6 the time.
Examples where this might be handy
This is obviously going to be the most useful when time is of the essence. Maybe you are being pursued by enemies and you need to refresh but don't want them to gain too much ground. Maybe you are the ones chasing an enemy and time is important for the same reason. Maybe you have to be in a place at a certain time and you don't have long much time to get there.
Other situational uses
I suppose the spell could also be very situationally useful if you needed a way to gently knock a willing elf unconscious. It works for any willing creature of course, but elves are more limited since they cannot be affected by sleep spells which is a common way to impose the unconscious condition in a non-aggressive way. I actually had one time where this came in handy in a campaign of mine, but I really don't expect this to be a very common use at all.
You could also, very theoretically, use this on an enemy that trusts you and willingly submits to the spell. Maybe you go undercover and disguise yourself. This seems pretty unlikely and I'm not sure that Catnap would be the best spell even to use in a case like this and it would depend on how your DM defines "willing", but it could be another use.
Rapidly taking a short rest is the primary and intended use of the spell.