If your initiative order is fixed, then doing upkeep just after each character's action should work fine. (But personally I go for automation to track everything.)
No declarations is RAW, and a single action phase is the "faster rounds" optional rule (which I also use). I like the chaos of rerolling initiative every round (and initiative order is hidden) but it's definitely faster if everyone knows when they are going to go, so I think that's a reasonable choice if you want to go that way.
I do full crits and effects even for unimportant combatants but only if a PC is involved. If there are ally NPCs fighting unimportant enemy NPCs (mooks), without a PC in that melee, then I just assign a chance each of them has been defeated each round, and worry about the details after the fight. That has been helpful when I do relatively large engagements (especially when the battle gets split between different areas or rooms). (I do try to avoid NPCs traveling with the party.)
Another thing to speed things up is that my NPCs rarely parry. That allows the PCs to set the intensity of the engagement. If neither side is parrying, the end will come a lot quicker one way or another. If the PCs parry a lot, that ends up reducing the net OB on both sides, so it extends the engagement. When the NPCs do parry, that extends the engagement even further, so the combat will take more rounds. So, my NPCs tend to parry only if they are important, or if they have a tactical need to delay. Otherwise they fight all-out.
On the other hand, in my current campaign the NPCs often have healing magic, so that tends to extend battles, and also provide more opportunities for foes to escape after they have fallen. (That may also help justify their recklessness in combat.)