Unless I'm mistaken, a call to an external symbol is resolved by the linker, not by Nasm. If you were intimately familiar with the linkable object format you're using, you could probably emulate this behavior, but it would mean creating the entire linkable object "by hand" with Nasm's binary output. There exist macros to do this with an executable (MZ, PE, and ELF), it ought to be possible to do it with a linkable object...
Nasm will treat two macros with different numbers of parameters as different symbols... perhaps you could add a "dummy" parameter to your macro to avoid recursion.
I'll refrain from telling you what a horrid, insane idea obscuring a perfectly good instruction in a misleading, cryptic, error-prone macro is! :)
Best,
Frank