I thought of something to maybe help you here. What about using an Adaxes custom boolean bit. Have you first business rule set the bit true and have the second business rule run only if not equal to true. On the second business rule that will be kicked off, have it run another action to clear the bit.
To map it a little
Moves the user to a specific OU
Calls a powershell script to mailbox enable the user
Modifies the user to clear some attributes
Set boolean bit to true
Second businees rule on modify
do this as long as boolean bit is not equal to true
Second action in second business rule
Set remove boolean bit
Does this help?