It was answered by Lee__li here
https://social.technet.microsoft.com/Forums/en-US/75ff257b-ed2d-4281-91be-88a9cdb334fe/stop-workflow-triggering-when-systemupdate-is-called-sharepoint-online?forum=sharepointdevelopment
My workflow was deployed using a App and I had to load the app web to get subscriptions.
Web web = context.Web;
var list = web.Lists.GetByTitle("MyList");
context.Load(list);
context.ExecuteQuery();
var workflowServicesManager = new WorkflowServicesManager(context, context.Web);
var workflowSubscriptionService = workflowServicesManager.GetWorkflowSubscriptionService();
// get all workflow associations
var workflowAssociations = workflowSubscriptionService.EnumerateSubscriptionsByList(list.Id);
context.Load(workflowAssociations);
context.ExecuteQuery();
var wf = workflowAssociations[0];
List<string> eventTypes = new List<string>() { "WorkflowStart" };
wf.EventTypes = eventTypes;
workflowSubscriptionService.PublishSubscriptionForList(wf, list.Id);
var listitem = list.GetItemById(3);
listitem["Title"] = DateTime.Now.ToString();
listitem.SystemUpdate();
context.ExecuteQuery();
eventTypes = new List<string>() { "WorkflowStart", "ItemUpdated" };//ItemUpdated
wf.EventTypes = eventTypes;
workflowSubscriptionService.PublishSubscriptionForList(wf, list.Id);
context.ExecuteQuery();