I applied oil based stain on a old cabinet after stripping and sanding. It dried a week (but it was humid). I applied a coat of water based poly and had no problems, just a light coat. When I try to put on a second coat, it beads up immediately. I waited 3 weeks and tried again (still a little humid) but the same thing happened. The veneer cannot handle much more sanding, what can I try to get another coat of finish on? Oil based poly? Shellac?
As a rule, waiting a week wouldn't normally be long enough after using an oil-based stain before you can safely apply a waterbased finish. You can get away with it, particularly if conditions are ideal, but it's not advisable.
Although it's been proven not to be needed, shellac is an ideal intermediate coat to use here to speed the process up, and to help ensure adhesion.
The veneer cannot handle much more sanding
If you need to sand further it would be scuff sanding which should by definition be light enough that the veneer is not in any danger (as you're not sanding through the finish).
If you wanted to err on the side of caution you could scuff using Scotch-Brite or a similar conformable abrasive instead (although avoid steel wool since you're using a waterbased finish).
Another option worth trying — test in an inconspicuous spot — is to literally clean the surface, wiping down with warm soapy water.
Possible cause: what can occur with waterbased varnishes is that some of the hidden or undocumented ingredients in the formulation can rise to the surface during drying and these lead to beading problems.
You can't apply a water based finish directly on an oil based finish. Put a coat of dewaxed shellac on it, then you can apply your water based finish.