Whats the correct way to programmatically include unpublished content in entity reference fields? (without views)
You will need to create a custom EntityReferenceSelection plugin. 
Which should probably extend the NodeSelection plugin in core.