Duplicate Content Vs Duplicate Element
It's a common mistake of webmasters from all over the globe to confuse duplicate content with duplicate elements. It would be helpful if you first established the differences between the two, before deciding which option is best for you.
What is Duplicate Content?
Google and other search engines determine duplicate content as pages that contain a very high proportion of content similar to that of another page internally, or externally. Using snippets, quote blocks from other pages or sites does not make a page become duplicate, assuming that some of the content you have within the content area is unique.
In this day and age duplicate content is expected, to avoid any punishment or confusion by the search engines its recommended that sites good use of canonical links, it was released for this purpose.
What is Duplicate Elements?
Duplicate elements are very common and not something that you should be concerned about, since Google and other major search engines expect template based elements such as navigations to be repeated multiple times on one page or many, for example it's common to see social links at the top of the site, and then again at the bottom, markup may differ or be exactly the same with different CSS styling.
Nowadays many sites use multiple navigation bars for desktop, and mobile, using media queries and display: none. Google does not care, however if possible you should avoid duplicate elements, why? reducing code and for administration purposes.
Avoiding Duplicate Elements
In most cases duplicate elements can be avoided by doing some research or knowledge, in a lot of cases like nav bars for mobiles, administrators do it because its all they know how to do, or they are lazy and want a quick dirty solution.
In your situation I believe that solution your using isn't the best practical solution and can be avoided. You can opt to use .no-js by using Modernizr or a similar no-js solution.
You simply add the class no-js to the body, whenever JavaScript is enabled, it'll remove the no-js and add js, what this means is your able to control the style of your site without the hassle of having to use <noscript> and creating avoidable duplicate elements.
Your CSS will then look like this:
#nav { display: none; }
.no-js #nav { display: block; }
You can then use .no-js for all other features of your site that need tweaking for the no-js environment.