Motorcyclists encounter a similar issue, and to work around the problem many jackets have a length of stretchy Lycra style fabric sewn onto the bottom of the jacket. It bears half a zip, and the other half of the zip is attached to the trousers. Zipping them together keeps the riders back covered with fabric, handy for a variety of things, including protection from cold and preventing the jacket from riding up exposing bare skin in an accident situation
Here we see the idea, these pants are sold standalone so they just come with a built in zip and a loose part, attaching the loose part to a jacket that doesn’t have one is an exercise for the user.

And here’s a jacket (different manufacturer hence different zip appearance) featuring the other side of the connection.. in the case where the built in zip was compatible you’d just zip them together. If the pants and jacket were different makes you’d replace the jacket size zip with the loose bit of the pants zip. the black fabric bit is stretchy:

You could try modifying your skiwear in a similar way. If you use Velcro rather than a zip, be sure to sew the hard scratchy side of the Velcro so it faces away from your skin in normal use (general rule of Velcro, if you’re arranging it a way where misali*ment means it could touch you, make sure it’s the soft side touching you)
Another option to consider, like babies wear suits that have poppers to attach the front to the back in the crotch region, consider modifying or extendin your shirt so you can fasten the front to the back between your legs. Alternatively Velcro your shirt to your underwear in a similar fashion to the jacket and trousers advice above