For the announcement thing I recommend that you make your own *-trigger2.lua scripts that do announcements and forward the rest of the arguments to the existing *-trigger.lua script. When it's possible to do as separate commands, it makes sense to logically separate them so that only one place has to be updated if it needs to be fixed. If you use one action frequently with a command, then writing a forwarder script shouldn't be too hard.
I'm not 100% sure if this is possible, but I had an idea for simplifying your wrapper script. You have a lot of different conditions for selecting a target, require this, require not that, etc. I'm pretty sure Lua scripts can "return" a value to whatever called the script, so if you do it just right then you should be able to separate out all the conditions into separate script files once dfhack.run_script is modified to return the return value of the script it runs. Basically, for each candidate, run all the condition scripts passing along the caster and target (and the spell if necessary), if the condition script returns definitelyYes then accept, definitelyNo then reject, maybe then keep running the other condition scripts (or however you want it to work). There would be a slight overhead, but Lua isn't fast in the first place and it could make your code a lot easier to maintain and extend. If you name your helper scripts based on the arguments the user actually passes that would make it even easier to call the helper scripts as external subroutines.
Basically you could have one small central file and many helper scripts in a subfolder instead of one monolithic script. It's almost always a bad idea to do it this way, but in your case I think it's worth it. Most of the time you should use Lua modules, but then you'd have to import many modules or have one monolithic module and that would defeat the purpose.