Better Method
An anonymous user has suggested this new method, which sadly I can't give credit for because they are anonymous, but it's a better idea.
Have a repeating always active command block with:
/kick @a[tag=banned]
You can then run this command to "ban" them:
/tag A_USERNAME add banned
To unban someone:
/tag A_USERNAME remove banned
Old Answer
A workaround way to do this without the whitelist is to have a repeating always active command block with:
/tp @a[tag=banned] 0 253 0 facing 0 255 0
Make sure the chunk at 0, 0 has been generated or use a different (X, Y)!
You can then run this command to "ban" them:
/tag A_USERNAME add banned
To unban someone:
/tag A_USERNAME remove banned
This method works by repeatedly teleporting the banned player high in the sky. This makes it impossible to do anything (assuming they're not hacking), as they will also be facing upward.
Sadly you can only ban or unban someone if they are online though (Once they are banned though if they leave and join they will still be banned).