Not if its non-reentrant, that will throw an error, but you can I believe specifically allocate 1 instance, inside a loop, by opening a new reference with 0x80. I believe I've seen other people do that (and I've always been surprised it works).
Personally, I always do exactly 1 pattern:
-Use static strict VI ref to get VI Name
-Wire static strict VI ref + VI name to Open VI ref once and only once ever during the execution of the entire program. Use 0xC0 (40,80).
-Call start async call as needed.
I've never had an issue with this pattern.
The reason I suggested the 1-button dialog as an additional check is because I've seen situations where the debug information doesn't get set in a reentrant function -- for example I definitely wouldn't look at the front panel, as I believe I've seen the front panel show the default value in some situations. I've also mis-placed breakpoints to properly debug, so putting in the dialog is a quick way to be doubly sure.
Long story short, its definitely not a limitation of the feature, but I have no clue why you're seeing the behavior you're seeing.