I thought it was reduntant in the caller plugin, but apparently it isn't. You should, as stated, use callfunc_begin_i instead with -1 as the plugin ID.
@Connor: Thanks. If I'm correct, callfunc_end returns what the function called does, right? So check if callfunc_end == PLUGIN_HANDLED and prevent the rest of the code execution if that's the case?