To get matches based on the first four bytes, I'd recommend the following query:
SELECT * FROM table WHERE substring(addr from 0 for 5) = '\x8ac5c320'::bytea;
The documentation for substring can be found on the bytea functions page, though that's admittedly minimal.
The query as written will likely perform a sequential scan across the entire table. To remedy that, create the following index:
CREATE INDEX ON table (substring(addr from 0 for 5));
That creates an index specifically designed for the query you need to run frequently. It's a functional index -- it's indexing a function result, rather than a column.
That should get you the performance that you want.
All that said, though, your example query does not actually query for the first four bytes. If the query is more correct than your description of the query, then this approach won't work.