Any device with audio jack as UI
If you want to use the audio jack output of a phone, you can't use frequencies above the hearing limit. Because the phones all contain a DAC followed by a low-pass filter that attenuates everything above 20kHz or so. So the phone output will never be able to produce ultrasounds.

As a consequence, the simplest is to use old-fashioned DTMF, as you suggested yourself. There are a bunch of chips able to do that, for example the Microsemi MT8870. The figure 9 in the datasheet shows a typical configuration that should fit your needs, and you'll see there are very few external components. And this way, the software arduino part does not need to do the actual DTMF decoding, and you get 16 possible output states (if it's not enough, you could use sequences of multiple tones).

By the way, nice idea, overall. Very simple and effective.