Is there a way to customize error pages beyond the message in locale .yml files? Ideally, I'd like to use a template for my 404 page.
No. Currently your choices are i18n text in your layout or a completely static HTML file.
Feel free to submit a patch. Would just need to modify this logic to do a render an "action" (maybe based on the HTTP status code).