The server cache of WP engine can bother a little, they have a very invasive cache. Try removing the cache from the server:
https://wpengine.com/support/cache/
For debugging you could print the result of
update_post_meta ($ post_id, $ field, $ _POST [$ field]);
(which will be true or false)
Because get_post_meta sometimes does not work since In fact, when you query a custom field, all the fields for that post are retrieved from database, cached via object cache, and subsequent requests pull data from cache and not from db.
It can also be a problem of priorities, try this:
add_action ('save_post', 'fws_meta_save', 20, 1);