TTL
The default TTL for Android is 64. Default for Linux is 64. Default for Windows is 128.
When a packet passes through the router, its TTL is decreased by 1. So a packet from your phone will have TTL of 64, while one from device on hotspot will get decremented to 63 when passing your phone, acting as a router.
Unless it starts with 65, then gets decremented to 64, the same as with your phone directly.
On Linux you can temporarily change this with
sysctl net.ipv4.ip_default_ttl=65
as root.
If the carrier just checks the TTL, congrats.
I haven't played around with IPv6 hop limit.

HTTP proxy
If that doesn't work, you can try to proxy traffic through the phone. I like to use Tinyproxy in Termux.
The config is pretty simple, and also supports (unencrypted) authentication with username and password.
Another option is an all in one app like TetherFi. It creates WiFi Direct group (without direct internet access), and has a built-in HTTP proxy.
Both ways allow also using your phone's VPN.
The HTTP proxy can be easily configured in Firefox, for example. For Android, there is a pretty cool app called NekoBox which is a proxy client for many different protocols. It uses the VPN interface to pass everything through the proxy, thus giving you full device connectivity on the other device.

TinyProxy: https://tinyproxy.github.io/ (can simply be apt install
ed in Termux)

Termux: https://f-droid.org/en/packages/com.termux/ (terminal emulator for Android)

TetherFi: https://github.com/pyamsoft/tetherfi

NekoBox: https://github.com/MatsuriDayo/NekoBoxForAndroid
