Between now and then, I've gotten it working by using PCMSK0 very carefully, ie masking everything but the pin I'm 'listening' to. I suspect that before, indeed some digitalWrites were triggering undesired interrupts.
I've found that I need to do this, since cli() and sei() don't seem to work as expected* so I've avoided using them at all, and only using the PCICR and PCMSK0 to disable/enable interrupts. In any case, this little vacation in 'interrupt hell' has opened my eyes to some things to be very careful of in the future.
Also, my advice to any other interrupt newbies: do not even attempt to debug without a scope
*I suspect that other wiring functions (eg Serial.print) are disabling/enabling interrupts and were the cause of some of my problems.