I would select option 1, as it is mentioned that storing reference data as part of application-> Consider an example where you are working on finance-related application, then in case if you are requesting for loan, You need to select the policy details to be selected and submitted, now 'Policy details' are maintained by external system say some' mainframe system', so whenever you create a case for requesting loan you need to hit the 'mainframe system' and get policy details via service call. Sometimes service calls might fail, and mainframe system can be down due to some maintainance issue, so as solution what you can do is, you, everyday, when case is created and policy is requested you get all policies from mainframe system and store in your application by creating local storage. and here onwards whenever you need policy details you will fetch it from your local storage if the data fetched is today, otherwise you will hit the service. And if service is unavailable you get the data from your local storage even though the policy data which is one day old(atleast you have policy data).
For the second option, I think you can store the details as part of case in BLOB.you might not need to have local storage.