The problem is that when switching songs, the MIDI route from your controller to your rack is broken, and re-established in the new song, and Cantabile (quite rightly) cuts any held notes to avoid leaving them hanging (it doesn’t necessarily know it’ll receive note-offs once you let go of the keys after the new song is loaded).
The only way I’ve found is to set up your rack such that instead of using Rack MIDI In, and a song-level route, instead you connect directly to the input from your MIDI controller within the rack. That means since the rack is not unloaded/reloaded, the route is maintained across song changes, and so your notes won’t be cut. Note that you may have those MIDI inputs hidden, which I think is the default, so you may need to set them to be visible first, in settings.
It works, but you kind of have to do it on a song-by-song basis, setting up a rack specifically to handle an intentional held sound across two specific sounds. You could even have specific rack states that use this special route, and use normal Rack MIDI In for other states. You wouldn’t want to have to stop using song-level routing because it’s so useful. So although it’s not a general solution for holding notes across all songs, whenever you specifically need it to link two songs, this should work for you.