What is an appropriate approach to sampling for probability of default using a classification model?
You should have a look at this Kaggle competition on fraud detection. In this kernel the winning team explains their approach. 

This could be a time series approach (same as yours) but in this case: 


  We are not predicting fraudulent transactions. According to the competition host Lynn here. Once a client (credit card) has fraud, their entire account is converted to isFraud=1. Therefore we are predicting fraudulent clients (credit cards).


For this team that won the challenge the solution was: 


  We did a CV GroupKFold using month as the group. 


It seems that perhaps you could use the same validation strategy. 

https://www.kaggle.com/c/ieee-fraud-detection/discussion/111284