Solved my own problem.
The problem is my lack of understanding for sample-based vs frame-based processing. https://www.mathworks.com/help/dsp/ug/sample-and-frame-based-concepts.html
Essentially, the from workspace block seem only to support sample-based processing, in which case the signal is being fed-in one at a time. This is a problem because at each given time-step of the simulation, only 1 value of the impulse response of the filter (simData.ht ) is available. Hence, the convolution is between 2 scalar values.
To fix this, use the signal from workspace block, which supports conversion to frame-based signals from workspace arrays. I set the size of the frame (number of samples in one frame per one time-step) to be the same length as the signals, putting the entire array in a signal frame. I then set the simulation stop time to be 0. What this does is cheating the simulation by saying that I'm only simulation 1 time-step, but this 1 time step contains entire time series data from workspace.