@robert-hh Thanks for that insight. My issue was that (unlike my example) the callback would trigger a separate function that included an additional but non-related alarm call back that would get 'stalled' from the original callback.
Having worked out that as long as an alarm is created from the 'main' thread it will not be blocked by work from the caller I have adjusted my program to use a mix of sensor alarms and secondary "worker" threads which are triggered by not run from the alarm callback. Not sure if it is the best way but seems to allow things to run smoothly without blocking.
I just made a mistake with the pins, the one I needed to not change were G12, G13 and G14 and not like mentionned above.
I'm still interested if I could use those Pins for input and then somehow deinit so that the communication still works.