Granting minimum select permission on system "sys" tables in every database
I can't seem to find a way around this other than creating a user for
  the login for every single database


Starting with SQL Server 2014 the new CONNECT ANY DATABASE permission can be used to accomplish this


  ...and then granting permissions to the system tables explicitly.


You have no need to grant permissions on system tables, they are visible to any user. But the visibility of objects they contain depends on the permissions the user has: he can see only those objects on which it has permissins: Metadata Visibility Configuration

And this can be solved by giving to your login VIEW ANY DEFINITION permission

Also, there was no need to give VIEW ANY DATABASE TO permission because it's already granted to public, and  VIEW SERVER STATE TO is not required for the metadata you described retrieving.

So, all you need are these permissions: 


CONNECT ANY DATABASE to access all the databases
VIEW DATABASE STATE for querying sys.dm_db_partition_stats
VIEW ANY DEFINITION for have the rights on any metadata