Just join the chats from your server, they will exist on both matrix.org and your server. Then you may leave with your old matrix.org account.
As for history, you could just import your key backup, if the room history is set to visible. Truly decentralized accounts will likely come at a later point, especially with all the work surrounding p2p matrix, where each p2p client is a server.
I've tested this with a couple of test accounts. By default the e2e rooms history are set like this:
Who can read history?
Members only (since the point in time of selecting this option)
but this option doesn't seem to work for me. The history didn't synchronize when i added my own homeserver account and verified it with other accounts - do i need to import the keys from the old account first for it to show up or am i misunderstanding how this option works?
As of recent Riot/web versions old messages that can't be decrypted in rooms will not be shown (saves the user from being blasted with Unable to Decrypt errors).
So the messages are likely there, but you won't see them until you import your e2e keys.