I appreciate your advice, but you're going offtopic and the question still stands.
Don't be so quick to dismiss what I say. Getting a good, strong, clean signal is far easier and will get better results than trying to fix up a noisy up with processing afterwards. This is true of all such signals not just audio and microphones.
It might be better to just use the output of one microphone. It might be better to point both mics toward the source you want rather than the one you don't. It might even help to put a nice thick baffle plate behind the mics on the sea side to try and block some of that noise. In fact I would experiment with making a parabolic dish or shotgun mic arrangement.
You could try and subtract the reverse signal from the one you want. I suspect it would not work so well. You will likely need to introduce a delay in one signal to compensate for the distance between mics and what ever lack of synchronization there is between the USB channels.
You could try to filter out frequencies you don't want. Tune into the birds as it were.
A google search for "linux noise audio cancelling software" find all kinds of ideas about this.
By the way, I love that pole installation you have shown.
Memory in C++ is a leaky abstraction .