I thought I'd share my partial solution to the problem. Google Hangouts provides an app called Hangouts Dialer* that lets you make phone calls to any phone number, even if the other party doesn't have Google Hangouts. On the surface, this is nothing special, since it's basically regular VoIP and the receiving party's caller ID will display "Unknown number." However, Google allows you to set up what they call "outbound caller ID" for Hangouts Dialer so that, although your call actually originates from Google's servers, it spoofs your Mint Mobile phone number so that people you call will recognize that it's you. This can be configured in the settings of the Hangouts app (I had to jump through a few hoops, including installing an older version of the Hangouts app and then updating to get it to work).
This means that you can place calls (but not receive them) from your normal phone number over WiFi when you don't have a cellular signal. You can even use it over LTE if your phone falls back to 2G when making or receiving calls (because it doesn't support IMS/VoLTE) and you want to e.g. browse the internet while on the phone.
It does have some limitations though:
- You can't send or receive SMS/MMS texts over WiFi with Hangouts. Hangouts Dialer only works for calls.
- You can't receive calls over WiFi, you can only make calls.
- If you use Hangouts Dialer to make calls over LTE, it will count against your data balance since it's just normal VoIP.
- Calls will probably drop or at least be interrupted if you switch from WiFi to LTE or vice versa.
* On iOS this feature is integrated into the main Hangouts app; there is no separate Hangouts Dialer app.