Simple crosstalk cancellation (or signal separation)? To start with, I'm pretty new to DSP, so forgive me failing to understand any basic concepts.

I'm working with an iOS app that depends on the input from the analog audio jack whilst monitoring the signal through output (headphones, etc). Unfortunately, iOS devices suffer from crosstalk given a high enough volume due to the proximity of the output and input leads.

Garageband on iOS provides something called "Crosstalk prevention" for monitoring guitar audio playback through its amp modelling. I've no idea how they do it but it's something I'd like to do in my app.

I've access to the output signal, and I perform a FFT on the input signal (to perform spectral noise gating) anyways, so anything that uses fourier transforms might be good since I'm doing that operation. It's difficult for me to find any solutions as DSP is pretty new to me.
If I understand correctly what you are trying to achieve is usually called Acoustic Echo Cancellation. In many cases, so-called adaptive filtering algorithms, such as the (normalized) least-mean-squares ([N]LMS) algorithm, can be used effectively. In this context, I can really recommend the book Adaptive Signal Processing by Widrow and Stearns. I'm sure you'll find a number of ready-to-use implementations of the (N)LMS algorithm to experiment with on the internet. (Have an eye on the filter order - it needs to be high enough to capture the length of your crosstalk path.)

Furthermore, as you mentioned that you are already working in the frequency domain, you can have a look on algorithms that are called (you guessed it) frequency-domain LMS algorithms. They originate, via so-called block LMS algorithms, from the classical LMS algorithms. In this context, I really liked the paper by Shynk: Frequency-domain and multirate adaptive filtering.