I know that you've dismissed Bonjour outright, but you might be able to leverage a wrapper class to make it more manageable. For example, Bill Dudney created such a wrapper within his sample Bonjour iPhone application (described here). I generated a Mac version of this sample application to show how you can communicate between the iPhone and a desktop PC. You can see this in action in the Networking session of my class on iTunes U, as well as some other examples of peer-to-peer communication.
For device-device discovery and communication, Bonjour or something based on it (like GameKit) is going to be your best choice. Bonjour is the only way to do discovery of local iPhones over Bluetooth, for example (again, GameKit leverages this). It also works transparently with WiFi or Bluetooth, so you can create communication code that is network-agnostic.
GameKit provides a nice abstraction layer above Bonjour, so I wouldn't immediately reject it. You can decide to not use the system-supplied GKPeerPickerController if you were concerned about the user interface of this.