Release : 4.10
With further investigation, we found that the columns in the database were empty/blank, but they were not NULL, which is why the masking was not happening.
In order for the "Keep Null" parameter to work properly, the field must be NULL; meaning there hasn't been any memory allocated to it yet.
The main difference between NULL (Unknown) values is there has been any memory allocated from the database yet. When a value is Empty or Blank, there has been allocated memory (length 0), and therefore the value is not NULL. This is why NULL values are treated differently than empty/blank values.
Once we set the value of the column to NULL, the masking worked.