You are talking about data evolving through time, but you haven't mentioned recording this time: for each of your object, record 2 dates: valid_from and valid_to.
Current records have a null valid_to. When a current record is changed (duplicated as per your scenario), set a valid_to timestamp with the current date/time on the old record.
To display ...
So it looks like i was able to get around my issue by replacing any occurance i had of
where 'ToWKT' is just an extension method i made below. keeping my sql/not sql options open with the second parameter too.:
public static string ToWKT(this NetTopologySuite.Geometries.Geometry geom, bool forSQL = true)