The answer is probably to not list users by their ID in the convos view model. Instead, list the actual users by reference. This will make both of your problems go away as Knockout will handle the bindings (two-way, if needed) for you.
Here's an example of what I mean:
var User = function(id,name,status) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.status = ko.observable(status);
};
var Convo = function(id,name,users) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.users = ko.observableArray(users);
};
var john = new User(1,'john','active');
var mary = new User(2,'mary','inactive');
var marcus = new User(3,'marcus','active');
var convo1 = new Convo(1, 'dinner', [john,mary]);
var convo2 = new Convo(2, 'birth day party tomorrow', [john,mary,marcus]);
That way if you refer to a user's status somewhere within a conversation, it will be kept in synch with your view model automatically.
See this fiddle for a demo of what I mean.