Add column with default in postgresql without table level lock
This problem is solved in PostgreSQL 11, which unfortunately isn't released yet at this moment. The release is planned for the third quarter of 2018.

There is a more detailed explanation in this blog post, but the short version is that in Version 11 the table won't have to be rewritten to add a default value to a column. So adding a column with a default should be pretty much instant.