Problem is I don’t know how to hook it up to APM. Digging around in the compass code it looks like onboard and externally connected compasses talk via I2C. I don’t see anything that talks over serial like a GPS receiver etc where you can provide a tty.
Looking at adding serial for this would be quite a chore. From what I have gathered APM also wants to talk to the raw device and do internal calibrations etc. Using something like the IMU brick is all that is offloaded. I guess you could set offsets of 0.
You really do want an external compass to get it away from all the RF noise. Why not simply get a GPS/Compass combined module that plugs into the GPS port and I2C port respectively. These are the most common way of getting an external compass - most people have them on their ArduPilot systems.
External IMU isn’t a good idea - unless its over SPI its simply not going to be reporting updates fast enough.
I took your advice and got an external compass breakout, https://www.amazon.com/gp/product/B00MQMRZ6C/ref=od_aui_detailpages00?ie=UTF8&psc=1. I was hesitant about this since I thought I2C was really short, like under a foot. After doing some researching it looks like for high frequency I2C depends on the capacitace of the cable, no more than 500pF. So using cat5 should be able to shoot the few meters I need.