I am working on a small project in which people create an account and they are given a sub-domain like username.mydomain.com

However, while this address is shown in the address bar of the browser, the page actually exists at something like mydomain.com/?profile=12345.

This would all be automatic.

Is this possible with a standard Bluehost account running cPanel?