Here is an example that manually add options without ngOptions but still bound to the model that I think related to your question:
http://jsfiddle.net/armyofda12mnkeys/cd6d5vfj/8/
Note: I put the empty '--Please Choose--' and 'Add new unit' options in the middle to see how they can be selected.
By default when land on the page ng-selected sets 'Add new unit' to be true (i wonder if angular smartly detects '--Please Choose--' could have also been selected since its model is empty and just selects the last true option, knowing you cant have two selected options in a regular dropdown?).
if you set $scope.currentquestion.someOtherParam = false; and run, then you get --Please choose-- as the default selection.
Then setting $scope.currentquestion.metric_pref = 'stn'; and run, then you should get stones set as the default.
Then changing another of the options you can see the model updating.
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<h3>{{currentquestion.text}}</h3>
<select
ng-model="currentquestion.metric_pref"
name="{{currentquestion.qid}}"
id="{{currentquestion.qid}}"
>
<option value="kg">
kg.
</option>
<option value="">
--Please choose--
</option>
<option value="lbs">
pounds
</option>
<option value="add" ng-selected='currentquestion.someOtherParam'>
Add new unit
</option>
<option value="stn">
stones
</option>
</select>
CurrentVal:{{currentquestion.metric_pref}}
</div>
</div>
var myApp = angular.module('myApp', []);
myApp.controller("MyCtrl", function ($scope) {
$scope.currentquestion = {};
$scope.currentquestion.qid = "QS1";
$scope.currentquestion.text = "What unit do you prefer to state your weight in?";
$scope.currentquestion.metric_pref = '';//can put stn in here to default at stones
$scope.currentquestion.someOtherParam = false;
//$scope.currentquestion.unit_options = [ 'lbs' , 'stones' , 'kg' ]; //lbs. for US, stones for UK, metric for others
//not using ng-options to build the value/text of the option as I need to use ng-translate in the code
});