but then the callback for PF_Cmd_USER_CHANGED_PARAM gets called twice whenever the button is pressed (at least in Premiere, haven't tried in After Effects), and I can't figure out why or how to effectively ignore the second one knowing it's not a real second button press. Any ideas?
This is a hack workaround, as opposed to figuring out why the event is triggering twice, but this might work.
In your User Changed Param callback, have a static A_short variable initialized to 0. Check for this being non-zero to open your file dialog, in other words ignore the first button hit and act on the second.
That was very kind of you to write that all out. I'm doing essentially that hack to ignore the second call, but it makes me nervous that it could fail in other unanticipated situations, so it doesn't seems like a great release-ready solution. Nobody knows why this happens in the first place? Really surprised how jumbled and hack-filled this plugin architecture is, coming from a giant like Adobe.