What I am doing currently is the following:
-
I have a static setlist in Cantabile named “Repertoire” - simply all songs in our current repertoire, arranged in alphabetical order, addressed by bank select / program change via a binding in the background rack. So whenever Cantabile receives a program change, it immediately loads the respective song.
-
I use my homebrew program LivePrompter to display lyrics / chords / comments in time with the song. I usually manage my set lists on LivePrompter; when selecting a song, it sends program changes to Cantabile. So with one touch on my LivePrompter tablet, I get the lyrics/chords displayed on my tablet and the correct song loaded in Cantabile. Since it is pretty easy to change the current song in LivePrompter (big list, just tap on the song title), I can be pretty flexible if someone wants to skip a song in the set list or bring in a new one. So once I’ve found the right song in my lyrics collection, Cantabile dutifully tags along.
-
I’ve built a setlist manager for LivePrompter that allows me to easily compile and edit set lists - but I don’t use this live; only in preparation for a gig. When changing the song order during a gig, I just manually select the alternative song or skip forward in the set list - which is easy with my LivePrompter tablet.
-
As a fail-safe, I usually create a gig-specific set list in Cantabile from my master list, with the songs in the order of our set. In case the connection between LivePrompter and Cantabile fails, I can simply step forward / backward in the Cantabile set list with two buttons on my keyboard/controller
But you can also be very flexible without LivePrompter 
The easiest way to do this is to keep all your songs in one set list (maybe sorted alphabetically) and assign each of them a program change number. If you have more than 128 songs, no problem: you can assign bank/program changes like 1.14 (bank 1 PC 14). Now to load any song, simply type its number and then hit S. Now you only need a friendly printed list somewhere on stage so you know the number for each song.
And yes, you can also assign the Enter key to select the song instead of the “S” key: Tools->Options->Keyboard & Controls -> Enter Key Action. Now you can use your USB number keypad the same way you used to with intone
Cheers,
Torsten