Full disclosure, it's been a while since I ran any encounters in Maps, but I have been able to make it do all of what you're looking for. Lately, I've been using the Owlbear Rodeo VTT, which is a 3rd party barebones VTT which does most of what I need it to. Much lower-tech than Roll20 or Foundry or Fantasy Grounds or any of the big name VTTs on the market, but it does the job and everyone can run it without much issue.
The thing to remember about Maps is that it's tightly integrated with the rest of DNDBeyond, so you have to have certain things set up ahead of time. Adding custom maps is easy if you have the map you want to use as a file, since it's just the background. Adding actual functional tokens/monsters etc is where it gets tricky.
You can only add stuff that you have access to in D&DB as a token. The only way I've been able to add/upload a new token is to add a homebrew monster. When you do that, you can select whatever image you want for it, and once saved it becomes available to select as a token in Maps. I had assumed there's a better way to just upload a one-off token, but due to the tight integration with the rest of the D&DBeyond platform, I'm not sure there is.