I confess I haven't looked VERY closely at your code, but in general, I can't see any problem with what I think you want to do.
See...
(Yes, I know that talks about things you aren't interested in. But it talks about USING what I think you want to use, just with different devices than you have in mind.)
I half remember something from some work a few months ago... the page is from YEARS ago, that since Arduino 1.0, you access SoftwareSerial slightly differently, but it IS still there, under some name or other. Perhaps just part of the "basic" environment these days, not needing an #include? Something like that.