There may be a more 'official' way to do this but here is how I've accomplished this. Create a new line item in the module you are importing into. Once you have the data imported, do a straight reference formula in the new line item pointing at the original (where your imported data resides) . Once you have entered the reference formula and all data has populated, simply delete the formula itself. The data will now stay static and not update as there is no longer a formula.
You're right that this is a challenging request, without implementing a strong business process to prevent overwriting the data (perhaps through dashboard instruction text).
Another option would be to enable Workflow for that list, so that after the import is run for the first time the user marks the data as Completed, which then turns each completed list item to Read Only data. Of course the typical Workflow considerations still apply, so maybe not the best solution, but definitely something to consider when it comes to locking only a subset of data within what should be a read/write module.
Another way is to play with access right if the "locking" is required on module level. The original import could be done into a module which is given WRITE access only for Model Admin and READ for all users.