Hmm. My initial reaction to the double-press idea is leave it. Making this change has that "Two wrongs don't make a right" feel. But I won't write it off in my mind without exploring the idea at least.
The description you gave leaves a few questions, all regarding condition 3.
1. If the first press of jump doesn't put the character in a curled state, what will the player visibly register?
2. If the first press of jump DOES put the character in a curled state, you have now given all the characters a 'Curl Up' move. Which means that in correcting one issue you've made a bigger change to the moveset than the issue itself. In other words, "Should I give all the characters a Curl Up move" is I think a bigger question than "Should I address this mistimed jumps issue?"
3. Either way, if the character is rolling-falling, again I ask what can the player visibly register?
4. If you consider then only applying this double-press move to uncurled-falling characters, are you comfortable then with the double-press having yet another inconsistency, while at the same time leaving the mistimed jumps issue still unaddressed when rolling off edges?
So they are the questions that come to mind when imagining it working.
I think my main hangup with it is the inconsistency. Firstly, one or the other control method is going to be more common. According to your conditions, the large majority of not-jumped air motion that can respond to jump-button input is falling (y_vel>0). So the double-press could well be the common method (and many posts ago you mentioned not liking this). I can't really say from experience whether using the double-jump move is more commonly done at the peak of a spring-bounce/quarterpipe-fling, or during a fall. Whichever method is more common, the player will have to remember the other one at times.
Secondly, the distinction is very small. If a player hits a spring, there will be a period where they only need 1 press, then a period where they need 2. The transition between these two timeframes might eventually be something the player learns, or it might be something that feels irritating if the player is trying to curl up and instead does a flame blast or water bounce. It could feel good to have these 2 different periods providing different options, or it could feel bad, I can't say. This will also be the situation for every quarterpipe the player runs out the top of. Now, instead of problems with the player potentially mistiming a jump, we have problems with the player potentially mistiming a Curl-Up. Instead of trying to judge where the plainly visible land ends, the player is now trying to judge when the curve of an invisible flight path peaks.
It seems to create more to consider than the problem it's solving.
Moving on now, note that the issue you're trying to address only exists for Sonic, and only with the fire, water and homing shields. Of course there must be some punishment for mistiming a jump, that's the point of a platformer. Simply falling is the perfectly intuitive and acceptable punishment that all games know. Maybe this is why the special moves were designed the way they were all along; to keep platforming foundations intact. Anyway, what you're saying by trying to address misfires in S2H is that the punishment is too strong, as demonstrated by the water shield example. I'm just clearing up that it only matters for Sonic, and only for 3 shields because: the insta-shield is the same intuitive "just fall" punishment that always existed, the lightning shield is actually kinder to the player, so is Tails' flying, and assuming the player didn't just stab the button, so is Knuckles' gliding. I bring up all that for the sake of considering other solutions.
The two-button approach is even more overinflated a solution in my opinion. An extra button to address a problem that only occurs at certain locations, and only for Sonic, only for 3 shields. It must be less than 1% of the jumps the player does. I was also a bit confused in that sentence where you wrote "and curls into a ball." If jumping from rolling... he's already in a ball. Shrug. I'm just not a fan of this approach at all; it even threatens the 3-button spin dash, already nerfed to 2 buttons, that a lot of people use.
1. Revert back to the original style. No specials at all unless the player jumped.
2. Do nothing and keep your S2H style. Specials work from any air status if y_vel > -4 pixels/frame. It's a very minor problem perhaps not worth the oversolving.
3. Implement one of the changes you suggest.
4. Reconsider the "always 2 presses/curl up first" approach, bearing in mind that Tails and Knuckles don't need it.
- Reduces need for 2 presses for two thirds of the game already by launching Tails and Knuckles into their flight immediately.
- Means Sonic is the only character that can re-curl in the air.
- This makes perfect sense; he's a hedgehog, he's a guy who rolls natively. Um, I'm ignoring echidnas at this moment heh (and even SA1 uses a 2 press method for Knuckles doh!)
- Just like the insta-shield, it suits Sonic's style of play perfectly; re-curling is a move that gives Sonic a small but useful extra power yet, like the insta-shield, it does not damage his motion at all; a perk Tails and Knuckles don't get with their specials.
- If anything, is too much of a buff for Sonic as it will allow him to recurl always, just like the insta-shield does in S2H now, without messing up his flow with whatever shield he's currently wearing. He will always be able to protect himself from running off edges, and he will always be able to convert every spring's bounce into a badnik or monitor rebound. (An example, EHZ act 2, get a lightning or homing shield then return to the start. Hit the yellow spring and try to bounce off the power sneakers. This is quite difficult; it's actually much better to lose the shield first. Changing Sonic to "One press to curl, 2 presses to activate secondary move" means he'll always have the power to aim his spring/fall-to-rebound transitions properly.)
- If you're rolling-falling then just go straight to the special move. It will be intuitive because the player will see that Sonic is already curled. This would mean the issue you raised about mistiming platform jumps will still exist when rolling from platforms, but not running, and not from springs. I think that's fair. The problem is minimised, the player has the option of running instead, or Tails, or Knuckles, to avoid punishment or they can try for the more skillful, more punishable, rolling jump in the 0.5% of the time this will ever be a concern.
I have more thoughts on the matter but I think I've written enough heh.