2 'musts' in 1 bool illegal?

Yes.

"must" : [
	{"match" : {"message:" "localhost"}},
	{"match" : {
		"range": {
			"@timestamp" : {
				"lt" : "now/h"
			}
		}
	}
]

This is the proper syntax.