Cloning does create any local branches except for the remote's "default branch". If you want other local branches, you must create them. That's not going to happen by magic; you need to create those local branches corresponding to each remote branch, in turn, one at a time. There is no other way.
If you don't want to do this manually for all remote tracking branches one by one yourself, you can write a script that does it for all remote tracking branches one by one. But one way or another, you must do it for all remove tracking branches one by one.
For example, see the script at https://gist.github.com/wilmarvh/95fe7daed6ee6a63d811677e040ae421. In case that link fails, here's the script (bash or zsh):
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
done
(Or write a similar script in any programming language you're familiar with.)
I should add that in my opinion this is a very silly thing to want to do. There is nothing to be gained by creating a local branch you don't need; it just adds overhead in the future, because each local branch will have to be kept up with its remote tracking branch. My recommendation would be to drop this desire and just make a local branch only if you absolutely need it. (In my personal programming life, I never make local branches from remote tracking branches. If I want to see what's in a remote tracking branch, I simply check out the remote tracking branch, detached.)