You could write a delete_line() command clone that did not call maybe_unsurround_block() before calling _delete_line(). And since you are talking about delete-line rather than cut-line, you don't have to think about chaining clipboards, so this would be pretty staightforward.
However, if you are already committed to remembering a separate binding, you might want to consider leaving delete-line() alone, turning off def_auto_unsurround_block, and binding delete_code_block() to a key and just use that instead of delete_line() when you need the more sophisticated functionality.
This way delete-line will be fast, and you will still have the block oriented functions available when you need them.