I would store the sensitive code in a separate file. The file should be saved using Encode and you can evaluate it in your notebook using Get without revealing the contents of the file.
Without a separate file, maybe something related could be done by putting the output of Encode into the initialization of the Manipulate. For example suppose that you have this secret 123 constant, you could:
WithCleanup[
input = CreateFile[];
output = CreateFile[]
,
Export[input, "x=123", "Text"];
Encode[input, output];
Import[output, "Text"]
,
DeleteFile[{input, output}]]
(* "(*!1N!*)mcm\nXw\\kJhKx !" *)
and then put that into the initialization of the manipulate:
Manipulate[ f[x],
Initialization -> Get[StringToStream["(*!1N!*)mcm\nXw\\kJhKx !"]]]