Something like this would require a lot more room in the battle code bank than most hacks allow... Unless you expanded the rom and re-organized everything so you have over 800 free bytes, like I do in my MMC5 project! Without looking at my own project files, here's my best guess on how I'd do it:
Replace the fist sprite with an arrow.
Replace the BB/Master attack sprite to maybe have a bow. This would mean they can't equip any other weapon type, and would attack with the bow when "unarmed" as well. Therefore the weapons sold in shops and in chests would be different arrow types.
Remove the check for BB/Master fist sprites. Not sure how many bytes this would free up. (Edit: I initially thought this would require a big check through weapon types, but then I realized all the game needs is to see what the sprite is. So I said you'd need a lot of space but you need less than I pictured!)
When doing a physical attack, check if the weapon sprite = arrow. If it is, toggle the magic animation on and weapon swing animation off.
Now in my project's magic animation routine, I've got it set so that the spells move forward a few pixels each (or every other) frame. Do another check to see if its using the arrow sprite, and if so, turn off the background flashing effect, and increase the speed of the animation so it moves faster!
With the standard battle screen, the arrow would move through the border between the players and the enemy, and the BB/Master might victory dance with their bow weirdly.
Some of the space issues could be solved, MAYBE, depending on how much free space is in the fixed bank for a small routine that swaps from the battle bank to the weapon equip bank and back--and how much free space is made by deleting the unique BB/Master weapon/armor equip code which I assume you wouldn't need anymore...
Edit 2: Actually went to try and do it. Removing the BB/Master special code for setting up weapons makes enough free space. You only need a few checks here and there for the right weapon sprite. One for where it draws magic--I set up an off/on variable to cancel the background flashing, and this variable also works to stop the "spell" animation from using the second sprite, thereby keeping the arrow sprite the same throughout.
A simple check in DoPhysicalAttack sets up the "do magic animation", and the rest is in the WalkForwardAndStrike and PrepAttackSprite_AFrame animation code.
This is all, of course, using the disassembly to shift code around willy-nilly, and would need much further tweaking to set up a hack that's compatible with other hacks.https://youtu.be/sJCEjRiO9p0
Of course they just go straight ahead. I vaguely remember FF3 arrows going up/down toward the targeted enemy... not sure how to do that. Got 63 bytes left though if anyone wants to try that.