I really can’t help you when it comes to blocks. But I do know that fields are associated with the block and not the post ID.
This check in my original function tests to see if a value has already been set rather than depending on the post status
//...
if ($value !== NULL) {
// if the value is exactly NULL it means
// the field has never been updated
// we don't want to change fields that have already been edited
return $value;
}