If you're on version 6.x, the you can use tstats command to generate metadata stats, which is time bound and much faster (then regular search). Following is the equivalent to metadata search
| metadata type=hosts index=*
| tstats count as totalCount min(_time) as firstTime max(_time) as lastTime WHERE index=* by host | eval recentTime=lastTime | eval type="hosts"
No, not really. Time range for metadata only affects which entries that will be returned based on recentTime and lastTime.
May I suggest another option - use
metasearch instead. As a bonus this also enables you to split your stats by multiple fields if you want (so for instance you could do stats count by host,sourcetype). This query should give you something similar to what you get with
| metasearch earliest=-1d | stats latest(_time) as lastTime,count by host