SQL Server 2016 Security - Restrict users from viewing a single database
Contained Databases are your option.
Your server version supports them.

No one of your user will require server access, all of them can be authenticated by corresponding database.
As consequence, none of them will "see" databases other than they are mapped too.

The problem of "seeing" all the databases derives from VIEW ANY DATABASE server level permission granted to public, if you revoke it from public or deny to someone, that login will not "see" even the database it is mapped to, except for the database owners (not to be confused with members of db_owner database role, the owner is only one server principal that owns the database).

So when we have no logins, we have no problem of databases visible to everyone