The second part is easy enough, instead of using recover all you'd just use recover hp/mp and then change state to remove the specific states you want rather than run the recover all function which removes them all, really simple stuff. As for the first part, what you could do is have a battle event for each actor that runs when their hp hits 0 that adds a point to a variable (one for each actor) and then adds a blank or 'dummy' state for them and have said event require a conditional that the actor not be affected with the dummy state to proc (so that it doesn't keep updating every single turn the actor stays downed) and have all of your revival skills/items/events remove said dummy state as well as the death state so that the next time they die it would proc again. That can get tedious because you'd have to do it for each troop, however Yanfly has a plug in called base troop events that allows you to create events to run in all battles, not just the one specific troop it's written in that would make it all fairly simple as well and I'd recommend it if you don't have it already.
Then all you have to do is make sure that your in battle revival abilities are run by event rather than standard formula and have them check a conditional branch where the variable added to each actor's death is checked and the skill fails and procs some kind of explanation text if your limit for that actor is exceeded. Or, if you don't want to frustrate your players with the possibility of wasted moves maybe have the battle event that upticks your actors variables remove them from the party (sort of like ff's X-Death) once the variable exceeds the revive limit. Of course, then you'd need to also employ a fairly lengthy common event that makes sure and returns any removed members uninitialized after battle as well, which is doable as well if a little bit tedious.